在没有实现的情况下,抽象方法如何工作?

How do abstract methods work when there is no implementation?

根据这个定义我知道什么是 abstract methodabstract class:

抽象方法:

An abstract method is a method that is declared without an implementation

摘要class:

An abstract class is a class that is declared abstract—it may or may not include abstract methods

所以,android

中有很多abstract classesabstract methods

例如其中之一是 ActionBar class 其中 abstract methodsetSubtitle(int resId)

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

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

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

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

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

它 "doesn't" 无需实施即可工作;无法创建抽象实例 class,这是抽象方法的要求。

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


在这种情况下 getActionbar returns 从 ActionBar 的子类型创建的对象。检查生成的操作栏对象 - 例如。查看 getActionbar().getClass() - 将显示返回的对象实际是什么具体类型。来自 Activity.getActionBar method source this is expected to have a type of ActionBarImpl.