我发现子类其实可以重载父类方法
class S{
public int print(int a){
System.out.println("父");
return 1;
}
}
class D extends S{
public int print() {
System.out.println("子");
return 1;
}
}这个如果把返回值改成别的参数相同就会出错,我觉得是编译器认为是重写,但是如果
参数不同编译器就认为是重载了,但是重载还不符合定义,那这个属于什么,之前百度过有说这个是重构的,但是重构是什么
根据代码分析,你的说法有错误:
1、print方法存在两个类中,就不是重载了。不符合重载的定义。
所以,还是好好想想吧......
关键是你D类也没继承S类啊
子类重写父类的方法,可以对父类方法进行扩展,重载是同一个类中,方法名相同而参数列表不同。
1、重写是子类的方法覆盖父类的方法,要求方法名和参数都相同
2、重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数,可以参考API帮助文档看看类的构造方法。
所以你所描述的应该是重写,而不是重载。既然重写就需要继承父类,而你D类没有继承S类。
看了下代码发现:两个方法是没有关联的,处于两个类中,是两个独立的方法,并不是重载!方法的重载是同一类中方法名相同但是参数列表不一样!
不好意思我忘写了,手写的,我在电脑上试过,可以重载的。