没有实现时抽象方法如何工作?

时间:2015-08-09 22:10:17

标签: java abstract-class abstract-methods

根据这些定义,我知道什么是abstract methodabstract class

抽象方法

  

抽象方法是一种没有声明的方法   实施

抽象类

  

抽象类是一个被声明为abstract的类 - 它可能也可能是   不包括抽象方法

所以,android中有很多abstract classesabstract methods

例如其中一个是ActionBar类 及其abstract methodsetSubtitle(int resId)

现在,如果您想为您的活动设置字幕,请执行以下操作:

getActionBar().setSubtitle(R.string.subtitle);

其中getActionBar返回一个具有抽象方法的ActionBar。但是,当setSubtitle方法没有实现时,它是如何工作的?

2 个答案:

答案 0 :(得分:3)

它没有"没有"没有实施的工作;无法创建抽象类的实例,这是抽象方法的要求。

创建的实际对象 - 不能从抽象类创建,而是从其具体子类型创建 - 因此具有通过subtype polymorphism调用的实现。

在这种情况下,getActionbar返回一个从ActionBar子类型创建的对象。检查生成的操作栏对象 - 例如。查看getActionbar().getClass() - 将显示返回对象实际上的具体类型。在Activity.getActionBar方法来源中,预计其类型为ActionBarImpl

答案 1 :(得分:2)

总有一个实现,但它不是定义你的引用类型的接口或抽象类。

相反,必须有一个子类来实现或继承每个方法的实现。