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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 逆袭的风 中级黑马   /  2013-8-6 10:08  /  1795 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 逆袭的风 于 2013-8-6 21:51 编辑

今天突然突发奇想敲了如下代码
  1. /*
  2. 验证能不能用子类抽象方法重父类实例方法
  3. */

  4. class Fu
  5. {
  6.         void eat()
  7.         {
  8.                 System.out.println("吃货");
  9.         }
  10.         void sleep()
  11.         {
  12.                 System.out.println("吃饱就睡");
  13.         }
  14. }
  15. abstract class Zi extends Fu//定义一个抽象子类
  16. {
  17.         void play()
  18.         {
  19.                 System.out.println("偶尔玩玩也不错嘛");
  20.         }
  21.         abstract void eat();//用抽象方法重写父类实例方法
  22. }
  23. class A extends Zi
  24. {
  25.         void eat()
  26.         {
  27.                 System.out.println("吃点好的");
  28.         }
  29. }

  30. class  ExtendsDemo
  31. {
  32.         public static void main(String[] args)
  33.         {
  34.                 A a=new A();
  35.                 a.eat();
  36.                 a.sleep();
  37.                 a.play();
  38.                
  39.         }
  40. }
复制代码
他还编译运行了
那为什么可以用子类中的抽象方法重写父类中的实例方法呢??????????

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

7 个回复

倒序浏览
覆盖的前提是,父类中方法和子类中的方法  参数列表 ,方法名,返回值 都相同,而且只要子类方法的权限大于父类,子类的方法就能复写父类方法的功能。

并没有说父类是实例方法,子类就不能用抽象方法覆盖了。只要满足覆盖的前提条件就行。
回复 使用道具 举报
我的理解是这样的,你的A是ZI的子类 ,A中的void eat()方法重写了ZI中的void eat() 方法,而ZI又重写了Fu的 void eat(),因此运行的是A中的方法,所以可以编译运行,希望能帮助到你
回复 使用道具 举报
抽象类也是类的一种,只是它的方法没有具体的动作而已,父类可以被子类覆盖,改变方法里的行为,当然也可以被抽象的子类覆盖,改变不明确的行为!!!
回复 使用道具 举报
我觉得能不能要从覆写(Overriding)的定义原则上来说。
Java中,子类默认可以继承父类中的方法,而不需要重新编写相同的方法,但是有时候,子类并不想原封不动的继承父类中的方法,而是做出一定的修改,这就是采用方法的覆写(也成为覆盖)来实现的。Java中覆写指的是,在子类中对父类中同一重名函数实现部分加以改变,但与父类的该方法的方法名、返回类型和参数列表都保持一致。即子类对父类中的函数进行重新定义,子类中的新方法将覆盖父类原有的方法。覆写是父类与子类之间的一种多态表现。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
这个例子说明,只要符合覆盖条件,子类方法就能覆盖父类方法!只是这种做法很2,完全颠覆了我们用覆盖的意图。
回复 使用道具 举报
虽然定义成抽象方法,但是并没有缩小父类的访问全新,也没有跑出更多异常,完全符合覆盖条件。
回复 使用道具 举报
kime 中级黑马 2015-7-2 23:32:35
8#
抽象方法是没有方法体的,没有方法实现部分,因此是不能重写父类的方法的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马