黑马程序员技术交流社区
标题:
这种情况可以有多种解释吗?可以算子类重写了父类方法吗?求高人指点?
[打印本页]
作者:
杨海波
时间:
2012-6-2 01:37
标题:
这种情况可以有多种解释吗?可以算子类重写了父类方法吗?求高人指点?
class A {
public Object fun() {
return null;
}
}
class B extends A {
public String fun() {
return null;
}
}
复制代码
作者:
cro
时间:
2012-6-2 06:35
这个不算重写!
方法重写的规则是:1、子类中的方法的名字、参数列表以及返回值和父类中的方法完全一样。
2、方法的权限修饰符不能降低。
作者:
王月
时间:
2012-6-2 09:53
这不是重写,重写的格式为:
1,必须在继承中,在子类中。
2,子父类的方法完全相同,方法名、返回值类型和参数列表都要一样,而且子类方法权限要大于等于父类方法的权限。
你的子类方法返回值类型和父类不一样,所以不是。而且如果真要重写的话,执行语句和父类是不一样的,因为你是要利用重写来定义子类特有的方法:
class A
{
public Object fun()
{
return null;
}
}
class B extends A
{
public Object zi()
{
return 1;
}
}
类似于这样的,方法名、返回值等一样,执行语句不一样。
希望可以帮到你。
作者:
朝哥
时间:
2012-6-2 09:56
重写是子父类之间特有的。
重载与重写的区别:
重载:
**在同一个类中。
**方法名相同,参数列表不同。
重写:
**存在于子父类当中。
**方法的声明一致。(名称和参数)---------------------------------------------------------------------这才是重点,只需要名称和参数一致,不需要返回值一致。
**子类的访问权限不能低于父类的访问权限。
作者:
朝哥
时间:
2012-6-2 09:56
重写是子父类之间特有的。
重载与重写的区别:
重载:
**在同一个类中。
**方法名相同,参数列表不同。
重写:
**存在于子父类当中。
**方法的声明一致。(名称和参数)---------------------------------------------------------------------这才是重点,只需要名称和参数一致,不需要返回值一致。
**子类的访问权限不能低于父类的访问权限。
作者:
张洁
时间:
2012-6-2 13:43
本帖最后由 张洁 于 2012-6-2 13:47 编辑
算是子类重写哈~
首先是规则:
1、必须是在继承里。
这里满足:B类继承了A
2、方法名、参数个数和参数类型必须相同 (注:返回值不一要相同)
这个是重点啦~明显是符合这个要求的,在返回值这个主要讨论点上,不需要一定相同哈~
实际测试:
把楼主的代码复制到eclipse中:
则B类中的fun()方法左侧就会有个小三角符号~
鼠标指上去就会显示为override也就是对A类中fun()方法进行重写啦~
楼主可以试试哈~直接用事实说话哈
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2