我正准备参加 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/