黑马程序员技术交流社区

标题: 求助 [打印本页]

作者: zhaogang    时间: 2014-3-11 14:38
标题: 求助
各位师哥师姐们小弟求助,我是Java初学者,想问下父类中的抽象方法,子类对象能直接调用吗?希望能给我个详细的答案,再次谢谢大家

作者: 何建明    时间: 2014-3-11 14:44
抽象方法是没有方法体的,子类必须全部复写父类的抽象方法,
否则这个子类依然是个抽象类。
也就是父类的抽象方法实际上只是个方法声明,
具体实现要在子类来完成。
作者: Style栉    时间: 2014-3-11 14:45
可以发生多态行为,但不是被调用。调用的是子类的重写的方法
作者: 房建斌    时间: 2014-3-11 14:56
抽象方法只能重写,不能被调用的,在子类中只能调用父类的非抽象方法。抽象方法连方法体都没有,想调用也不行啊。。
  1. public abstract class Horse {

  2.         public void eat() {
  3.                 System.out.println("Horse eat");
  4.         }
  5.         
  6.         public abstract void sleep();
  7. }

  8. class BlackHorse extends Horse {

  9.         @Override
  10.         public void sleep() {
  11.                 System.out.println("Black Horse Sleep!!");
  12.         }
  13.         
  14.         @Override
  15.         public void eat() {
  16.                 super.eat();
  17.                 System.out.println("Black Horse eat");
  18.         }
  19.         
  20.         public static void main(String[] args) {
  21.                 BlackHorse horse = new BlackHorse();
  22.                 horse.eat();
  23.                 //输出:
  24.                 //Horse eat
  25.                 //Black Horse eat
  26.         }        
  27. }
复制代码




作者: 透过生活    时间: 2014-3-11 15:04
抽象类
抽象方法必须存在与抽象类中,抽象类简单的说就是把类中相同的方法提取出来,存放在抽象类中。
抽象方法没有方法体,必须由子类复写抽象方法 才可以。
抽象类刚开始学到会比较难理解,深入了解后就会发现很好使用。
作者: duanyoujiji    时间: 2014-3-11 15:07
父类的抽象方法只是声明,不包含代码体,连大括号都没有,所以不能直接调用。
子类继承父类,用到父类的哪个方法就重写(覆盖)哪个方法,但是值得注意的一点是:把父类的所有方法抽象方法都重写派生出来的子类才不是抽象类,也就是说,只要父类还有一个抽象方法那么这个子类就依然是抽象类,就不能new对象。
作者: 贺骏鹏    时间: 2014-3-11 16:23
不能。抽象方法没有方法体,具体方法是怎么执行的都不清楚,你子类调用它能干什么呢?子类要想使用父类抽象方法,必须重写该方法增加具体的方法体。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2