A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class A {
  2.     public Object fun() {
  3.         return null;
  4.     }
  5. }
  6. class B extends A {
  7.     public String fun() {
  8.         return null;
  9.     }
  10. }


复制代码

5 个回复

正序浏览
本帖最后由 张洁 于 2012-6-2 13:47 编辑

算是子类重写哈~

首先是规则:
1、必须是在继承里。
这里满足:B类继承了A

2、方法名、参数个数和参数类型必须相同 (注:返回值不一要相同)
这个是重点啦~明显是符合这个要求的,在返回值这个主要讨论点上,不需要一定相同哈~

实际测试:
把楼主的代码复制到eclipse中:
则B类中的fun()方法左侧就会有个小三角符号~
鼠标指上去就会显示为override也就是对A类中fun()方法进行重写啦~
楼主可以试试哈~直接用事实说话哈
回复 使用道具 举报
重写是子父类之间特有的。
重载与重写的区别:
                重载:
                        **在同一个类中。
                        **方法名相同,参数列表不同。
                重写:
                        **存在于子父类当中。
                        **方法的声明一致。(名称和参数)---------------------------------------------------------------------这才是重点,只需要名称和参数一致,不需要返回值一致。
                        **子类的访问权限不能低于父类的访问权限。
回复 使用道具 举报
重写是子父类之间特有的。
重载与重写的区别:
                重载:
                        **在同一个类中。
                        **方法名相同,参数列表不同。
                重写:
                        **存在于子父类当中。
                        **方法的声明一致。(名称和参数)---------------------------------------------------------------------这才是重点,只需要名称和参数一致,不需要返回值一致。
                        **子类的访问权限不能低于父类的访问权限。
回复 使用道具 举报
这不是重写,重写的格式为:
1,必须在继承中,在子类中。
2,子父类的方法完全相同,方法名、返回值类型和参数列表都要一样,而且子类方法权限要大于等于父类方法的权限。

你的子类方法返回值类型和父类不一样,所以不是。而且如果真要重写的话,执行语句和父类是不一样的,因为你是要利用重写来定义子类特有的方法:

class A
{
        public Object fun()
        {
                return null;
        }
}

class B extends A
{
        public Object zi()
        {
                return 1;
        }
}

类似于这样的,方法名、返回值等一样,执行语句不一样。

希望可以帮到你。
回复 使用道具 举报
这个不算重写!
方法重写的规则是:1、子类中的方法的名字、参数列表以及返回值和父类中的方法完全一样。
               2、方法的权限修饰符不能降低。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马