java - 当一个抽象类扩展一个具体类时,继承的成员会变成抽象的吗?

标签 java inheritance

我正准备参加 Java 7 程序员考试并有一个问题:

当抽象类扩展具体类时,从具体类继承的成员在抽象类中是否会变成抽象的?

目前我正在研究的书中还找不到明确的答案;此外,Google 让我在原地打转,却没有告诉我我需要知道什么。

提前致谢

最佳答案

不,它们不会变得抽象。如果是这种情况,那么下面的代码将无法编译:

class Test {
    public void hello() {
        System.out.println("Hello");
    }
}

abstract class AbstractTest extends Test {  }

class ConcreteTest extends AbstractTest {
    // Inherits the hello() method from AbstractTest, 
    // which in turn inherits it from Test.
}

但它编译得很好。如果 hello() 方法成为抽象,则 ConcreteTest 必须为此提供一个实现。

但是,您可以在 AbstractTest 方法中将该方法重新声明为 abstract,然后 ConcreteTest 类必须给出实现为了那个原因。因此,在这段代码中:

class Test {
    public void hello() {
        System.out.println("Hello");
    }
}
abstract class AbstractTest extends Test {
    public abstract void hello();
}
class ConcreteTest extends AbstractTest {   
}

ConcreteTest 将无法编译。

关于java - 当一个抽象类扩展一个具体类时,继承的成员会变成抽象的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22361125/

相关文章:

C++ 强制转换为派生类

c++ - 模板类中嵌套类的问题

java - 编译错误: constructor in class cannot be applied to given types

Java - 带有密码的 ProcessBuilder rsync 命令失败

c# - LINQ .Include() 来自 TPH 继承中子类型的属性

php - 从 Symfony/Twig 中的覆盖版本访问父模板

java - 继承,为什么打印输出结果为null?

java - 返回方法定义中的特定数组对象

java - Java中的Anagram算法

java - ListView选择选项后如何显示数据?