[英]when an abstract class extends a concrete class, do the inherited members become abstract?
我准備參加Java 7程序員考試,並且有一個問題:
當抽象類擴展了具體類時,從具體類繼承的成員是否在抽象類中成為抽象了?
到目前為止,我在學習的書中找不到明確的答案; 此外,Google盤旋着我,卻沒有告訴我我需要知道的事情。
提前致謝
不,他們不會變得abstract
。 如果真是這樣,那么下面的代碼將無法編譯:
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()
方法變為abstract
,則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
無法編譯。
從具體類繼承的成員不會成為抽象,只有覆蓋它們並聲明抽象(方法成員)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.