根据这个定义,我知道什么是抽象方法
和抽象类
:
抽象方法:
An abstract method is a method that is declared without an implementation
抽象类:
An abstract class is a class that is declared abstract—it may or may not include abstract methods
所以,android中有很多抽象类
和抽象方法
例如其中之一是 ActionBar
类
它的抽象方法
是setSubtitle(int resId)
现在,如果您想为您的 Activity 设置副标题,请执行以下操作:
getActionBar().setSubtitle(R.string.subtitle);
其中getActionBar
返回一个具有抽象方法的ActionBar。但是,当 setSubtitle
方法没有实现时,它是如何工作的呢?
最佳答案
如果没有实现,它“不起作用”;不可能创建抽象类的实例,这是抽象方法的要求。
创建的实际对象 - 不能从抽象类创建,而是从其具体子类型创建 - 因此具有通过 subtype polymorphism 调用的实现.
<小时/>在本例中,getActionbar
返回一个从 ActionBar
子类型创建的对象。检查生成的操作栏对象 - 例如。查看 getActionbar().getClass() - 将显示返回的对象实际上是什么具体类型。来自 Activity.getActionBar方法源,预计其类型为 ActionBarImpl
.
关于java - 当没有实现时,抽象方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31909324/