java - 当没有实现时,抽象方法如何工作?

标签 java abstract-class abstract-methods

根据这个定义,我知道什么是抽象方法抽象类:

抽象方法:

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/

相关文章:

java - Android 内存泄漏管理显示 "Don use non-static inner classes"但这会带来副作用

java - Tomcat 两个项目相互通信

Java图形抽象drawline方法到底是如何工作的?

scala - scala 编译器可以在混合时强制实现抽象特征方法吗?

java - 有没有办法扩展 Codan ReturnChecker?

javascript - ECMAScript 6 是否有抽象类的约定?

c++ - 如何使抽象类正确返回另一个抽象类的具体实例?

java - 在 Java 中使用异常伪造抽象方法

python - TypeError : Can't instantiate abstract class <. ..> 使用抽象方法

java - 如何创建一个方法来测量执行一个方法所花费的时间