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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhaogang 初级黑马   /  2014-3-11 14:38  /  1005 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

各位师哥师姐们小弟求助,我是Java初学者,想问下父类中的抽象方法,子类对象能直接调用吗?希望能给我个详细的答案,再次谢谢大家

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

6 个回复

倒序浏览
抽象方法是没有方法体的,子类必须全部复写父类的抽象方法,
否则这个子类依然是个抽象类。
也就是父类的抽象方法实际上只是个方法声明,
具体实现要在子类来完成。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
可以发生多态行为,但不是被调用。调用的是子类的重写的方法

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
抽象方法只能重写,不能被调用的,在子类中只能调用父类的非抽象方法。抽象方法连方法体都没有,想调用也不行啊。。
  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. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
抽象类
抽象方法必须存在与抽象类中,抽象类简单的说就是把类中相同的方法提取出来,存放在抽象类中。
抽象方法没有方法体,必须由子类复写抽象方法 才可以。
抽象类刚开始学到会比较难理解,深入了解后就会发现很好使用。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
父类的抽象方法只是声明,不包含代码体,连大括号都没有,所以不能直接调用。
子类继承父类,用到父类的哪个方法就重写(覆盖)哪个方法,但是值得注意的一点是:把父类的所有方法抽象方法都重写派生出来的子类才不是抽象类,也就是说,只要父类还有一个抽象方法那么这个子类就依然是抽象类,就不能new对象。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
不能。抽象方法没有方法体,具体方法是怎么执行的都不清楚,你子类调用它能干什么呢?子类要想使用父类抽象方法,必须重写该方法增加具体的方法体。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马