黑马程序员技术交流社区

标题: 继承 [打印本页]

作者: qmayuan    时间: 2013-7-29 09:39
标题: 继承
为什么子类继承父类方法,就要必须重写父类的抽象方法?为什么不重写就无法new子类的对象呢?
作者: hou604720966    时间: 2013-7-29 09:56
抽象类可以没有抽象方法,也可以全部是抽象方法,如果子类继承的父类是抽象类,子类必须重写父类里所有的(是所有的)抽象方法,才能被实例化,也就是创建对象,要不然子类也将是个抽象类,抽象类不能被实例化
作者: woaiheima    时间: 2013-7-29 09:58
因为父类是子类向上抽取得来的,就像猫和狗都属于动物,他们都有吃的功能,后来又增加了“叫”的功能,这时就必须在父类里添加“叫”的抽象方法。
我没有看见你代码,真的不好和你解释。希望我的回答能帮得到你。

作者: 张俊生    时间: 2013-7-29 10:58
继承父类的抽象方法不重写,子类也是抽象类不能实例化。
作者: qmayuan    时间: 2013-7-29 11:05
谢谢啦。赶脚明白了~!
作者: 小罴孩    时间: 2013-7-29 11:50
我想说的是:抽象类存在的作用什么?抽象类中通常有抽象方法(没有抽象方法的没必要定义成抽象类),抽象方法是为了给多个子类提供统一的接口,这也是子类继承抽象类的意义所在,抽象类中的抽象方法只有申明,而没有具体的实现,至于不重写抽象方法为啥无法new子类对象,只有非抽象类才能实例化,如果子类不重写抽象方法,这样是无法通过编译的,可见java设计人员用心良苦啊!
作者: kangxiaoning    时间: 2013-7-29 13:32
甲鱼的屁股,龟腚吧,
作者: 李健09    时间: 2013-7-29 18:40
抽象类只是定义了方法的功能,而没有实现该功能的具体方法,子类通过继承父类并重写该功能才能通过子类对象能使该功能具体实例化,
abstract class Sporter//定义一个运动员类
{
        abstract void play();//运动员都有的运动,但项目不定抽象方法
}
interface Study//接口扩展,一部分具备学习功能,定义一个学习接口
{
}
class WangWu extends Sporter implements Study
//王五继承运动员运动的功能,但又具备扩展来的学习功能
{
    //子类通过继承父类复写功能和实例化接口使该接口具体
}
作者: hmYing    时间: 2013-8-3 17:27
抽象方法:abstract关键字定义
          没有方法体
抽象方法只是一种用来声明的方法,如果子类继承的父类里有抽象方法,就必须将这个抽象的已经声明的方法进行实现。
如果没有重写(实现)父类的抽象方法,就出编译不通过,会报错的,不只是不能new实体对象了




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