黑马程序员技术交流社区
标题:
求助
[打印本页]
作者:
zhaogang
时间:
2014-3-11 14:38
标题:
求助
各位师哥师姐们小弟求助,我是Java初学者,想问下父类中的抽象方法,子类对象能直接调用吗?希望能给我个详细的答案,再次谢谢大家
作者:
何建明
时间:
2014-3-11 14:44
抽象方法是没有方法体的,子类必须全部复写父类的抽象方法,
否则这个子类依然是个抽象类。
也就是父类的抽象方法实际上只是个方法声明,
具体实现要在子类来完成。
作者:
Style栉
时间:
2014-3-11 14:45
可以发生多态行为,但不是被调用。调用的是子类的重写的方法
作者:
房建斌
时间:
2014-3-11 14:56
抽象方法只能重写,不能被调用的,在子类中只能调用父类的非抽象方法。抽象方法连方法体都没有,想调用也不行啊。。
public abstract class Horse {
public void eat() {
System.out.println("Horse eat");
}
public abstract void sleep();
}
class BlackHorse extends Horse {
@Override
public void sleep() {
System.out.println("Black Horse Sleep!!");
}
@Override
public void eat() {
super.eat();
System.out.println("Black Horse eat");
}
public static void main(String[] args) {
BlackHorse horse = new BlackHorse();
horse.eat();
//输出:
//Horse eat
//Black Horse eat
}
}
复制代码
作者:
透过生活
时间:
2014-3-11 15:04
抽象类
抽象方法必须存在与抽象类中,抽象类简单的说就是把类中相同的方法提取出来,存放在抽象类中。
抽象方法没有方法体,必须由子类复写抽象方法 才可以。
抽象类刚开始学到会比较难理解,深入了解后就会发现很好使用。
作者:
duanyoujiji
时间:
2014-3-11 15:07
父类的抽象方法只是声明,不包含代码体,连大括号都没有,所以不能直接调用。
子类继承父类,用到父类的哪个方法就重写(覆盖)哪个方法,但是值得注意的一点是:把父类的所有方法抽象方法都重写派生出来的子类才不是抽象类,也就是说,只要父类还有一个抽象方法那么这个子类就依然是抽象类,就不能new对象。
作者:
贺骏鹏
时间:
2014-3-11 16:23
不能。抽象方法没有方法体,具体方法是怎么执行的都不清楚,你子类调用它能干什么呢?子类要想使用父类抽象方法,必须重写该方法增加具体的方法体。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2