我準備好參加我的Java 7程序員考試並且有一個問題:當抽象類擴展具體類時,繼承的成員是抽象的嗎?
當一個抽象類擴展一個具體類時,從具體類繼承成員然後在抽象類中變成抽象嗎?
到目前爲止,我在我正在學習的書中找不到明確的答案;此外,谷歌正在旋轉我的圈子,而不告訴我我需要知道什麼。
在此先感謝
我準備好參加我的Java 7程序員考試並且有一個問題:當抽象類擴展具體類時,繼承的成員是抽象的嗎?
當一個抽象類擴展一個具體類時,從具體類繼承成員然後在抽象類中變成抽象嗎?
到目前爲止,我在我正在學習的書中找不到明確的答案;此外,谷歌正在旋轉我的圈子,而不告訴我我需要知道什麼。
在此先感謝
不,他們不會變成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
將不會編譯。
感謝所有的細節 - 它真的幫助。 – eggshell
沒有繼承具體的類成員不會成爲抽象的,只有當你忽略他們,並聲明抽象的(方法成員)。
我假設你正在學習Java 7考試,你會在你面前有一個編譯器。爲什麼不試試看看? –