簡體   English   中英

當抽象類擴展具體類時,繼承的成員會變成抽象嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM