0

根据这个定义,我知道什么是 anabstract method和 an abstract class

抽象方法

抽象方法是在没有实现的情况下声明的方法

抽象类

抽象类是声明为抽象的类——它可能包含也可能不包含抽象方法

所以,在 android中有很多abstract classesabstract methods

例如,其中一个是ActionBar类,它的一个abstract methodsetSubtitle(int resId)

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

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

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

4

2 回答 2

4

如果没有实现,它“不会”工作;无法创建抽象类的实例,这是抽象方法的要求。

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


在这种情况下getActionbar,返回一个从 的子类型创建的对象ActionBar。检查生成的操作栏对象 - 例如。查看getActionbar().getClass()- 将显示返回的对象实际是什么具体类型。从Activity.getActionBar方法源,这应该有一个ActionBarImpl.

于 2015-08-09T22:16:20.533 回答
2

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

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

于 2015-08-09T22:12:22.563 回答