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

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

抽象類和接口?

抽象類和接口?

翻閱古今 2019-03-12 17:15:01
請問在什么情況下,將對象抽象為一個抽象類?在什么情況下,該將對象抽象為一個接口?我知道他們兩個的區別,就是想知道在什么場景下該抽象為哪種?
查看完整描述

9 回答

?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

比如說生物和人 此時生物可以當做接口,人當做實現生物的抽象類,男人女人作為具體實現類,為什么可以這樣設計?因為生物是個非常非常抽象的概念,你很難抽象出它的具體行為(也就是具體的方法實現),此時可以當做接口,人為何可以作為抽象類,因為他可以有具體的行為動作實現,比如,摸爬滾走,但是可能男人女人的性征不一樣,同時可能還有一些公有的行為 但是行為特征不一樣 這可以當做抽象類的抽象方法,讓子類實現。大概是這樣。


查看完整回答
反對 回復 2019-04-25
?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

接口表示一個能力/行為。例如:人會跑,狗也會跑,就可以定義接口IRunable。 使用接口很好實現組件間解耦。
抽象類就是為了實現多態,使代碼更方便擴展。

查看完整回答
反對 回復 2019-04-25
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

接口就好像是100% 純天然的抽象類。


查看完整回答
反對 回復 2019-04-25
?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

接口的話更偏向于為一群類定一個協議, 而抽象類的話已經向實現邁進了一步。

例如模板方法模式中就用到了抽象類,實現了一些通用的方法, 而將不同的方法延遲到子類再實現。


查看完整回答
反對 回復 2019-04-25
?
婷婷同學_

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

舉個簡單的例子,你現在想要抽象所有國家的人,那么你會想到抽象成一個接口,然后有個方法叫sayHello:


public interface Human{

    

    String sayHello();

}

OK,現在每個實現了這個接口的對象只要實現sayHello方法,就表示了各個國家的人,他們擁有了不同的打招呼的的方式。


但是現在業務復雜起來了,你需要這些人還具備一些通用的能力,比如cry,walk,那么這個時候,你是不是應該考慮把Human抽象成為一個抽象類,像這樣:


public abstract class Human{

    

    public abstract String sayHello();

    

    public String cry(){

        System.out.println("wu~wu~wu~wu~wu~");

    }

    

    public String walk(){

        System.out.println("左右左 左右左");

    }

}

總結一下,就是如果只有抽象的方法,那么就用接口,如果還有通用的具體方法實現,則用抽象類


查看完整回答
反對 回復 2019-04-25
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

參考:
The Java? Tutorials :: Learngin The Java Language :: Interfaces and Inheritances :: Inheritances :: Abstract Methods and Classes :: Abstract Classes Compared to Interfaces

查看完整回答
反對 回復 2019-04-25
?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

抽象類用于抽象事物,接口抽象行為


查看完整回答
反對 回復 2019-04-25
?
料青山看我應如是

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

該類定義統一操作,為對象提供方法


查看完整回答
反對 回復 2019-04-25
  • 9 回答
  • 0 關注
  • 485 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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