根据这些定义,我知道什么是abstract method
和abstract class
:
抽象方法:
抽象方法是一种没有声明的方法 实施
抽象类:
抽象类是一个被声明为abstract的类 - 它可能也可能是 不包括抽象方法
所以,android中有很多abstract classes
和abstract methods
例如其中一个是ActionBar
类
及其abstract method
是setSubtitle(int resId)
现在,如果您想为您的活动设置字幕,请执行以下操作:
getActionBar().setSubtitle(R.string.subtitle);
其中getActionBar
返回一个具有抽象方法的ActionBar。但是,当setSubtitle
方法没有实现时,它是如何工作的?
答案 0 :(得分:3)
它没有"没有"没有实施的工作;无法创建抽象类的实例,这是抽象方法的要求。
创建的实际对象 - 不能从抽象类创建,而是从其具体子类型创建 - 因此具有通过subtype polymorphism调用的实现。
在这种情况下,getActionbar
返回一个从ActionBar
子类型创建的对象。检查生成的操作栏对象 - 例如。查看getActionbar().getClass()
- 将显示返回对象实际上的具体类型。在Activity.getActionBar方法来源中,预计其类型为ActionBarImpl
。
答案 1 :(得分:2)
总有一个实现,但它不是定义你的引用类型的接口或抽象类。
相反,必须有一个子类来实现或继承每个方法的实现。