亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

可以使用具體的類來實現抽象嗎?

可以使用具體的類來實現抽象嗎?

幕布斯6054654 2021-05-05 13:18:42
我已經盡力找到了這個問題的最佳答案,但徒勞。因此,在采訪中有人問我這個問題,我回答“是”。由于抽象只不過是向用戶隱藏了實現細節,因此用戶不必擔心實現,而只知道方法簽名(需要傳遞的對象的類型和返回類型)。根據傳遞的對象類型,開發人員可以決定實現并返回相應的結果。因此,根據我的說法,這也可以使用如下的具體普通類來完成。public class LearnAbstraction {    public static void main(String[] args) {        Animal animal = new Tiger();        SpeakingAnimal sa = new SpeakingAnimal();        sa.getAnimalToSpeak(animal);    }}class SpeakingAnimal {    public void getAnimalToSpeak(Animal animal){        animal.speak();    }}class Animal{    public void speak(){        System.out.println("I am an Animal");    }}class Tiger extends Animal {    public void speak() {        System.out.println("I am an Animal and Tiger");    }}class Horse extends Animal {    public void speak() {        System.out.println("I am an Animal and Horse");    }}我知道這不是實現抽象的正確方法,必須使用接口或抽象類來完成。但是,問題是,是否可以使用具體的類來實現抽象(讓我們將適當的方法放在一邊)。因此,回答“是”是否正確?
查看完整描述

1 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

抽象類不能產生實例;它不能產生實例。您可以通過聲明私有構造函數來確保不這樣做。


這是一個例子:


class Animal{

    private Animal() {

    }


    public void speak(){

        System.out.println("I am an Animal");

    }


    static class Tiger extends Animal {

        public void speak() {

            System.out.println("I am an Animal and Tiger");

        }

    }


    static class Horse extends Animal {

        public void speak() {

            System.out.println("I am an Animal and Horse");

        }

    }

}


查看完整回答
反對 回復 2021-05-19
  • 1 回答
  • 0 關注
  • 193 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號