第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

一個(gè)接口比擁有正確的方法更重要嗎?

一個(gè)接口比擁有正確的方法更重要嗎?

拉風(fēng)的咖菲貓 2019-07-16 15:09:31
一個(gè)接口比擁有正確的方法更重要嗎?因此,假設(shè)我有這個(gè)接口:public interface IBox{    public void setSize(int size);    public int getSize();    public int getArea();   //...and so on}我有一個(gè)實(shí)現(xiàn)它的類:public class Rectangle implements IBox{    private int size;    //Methods here}如果我想使用iBox接口,就不能以這樣的方式創(chuàng)建它的實(shí)例:public static void main(String args[]){     Ibox myBox=new Ibox();}對(duì)嗎?所以我不得不這么做:public static void main(String args[]){     Rectangle myBox=new Rectangle();}如果是這樣的話,那么接口的唯一目的就是確保實(shí)現(xiàn)接口的類得到了接口所描述的正確方法?或者還有其他接口的用途嗎?
查看完整描述

3 回答

?
拉丁的傳說

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊


接口是使代碼更加靈活的一種方法。你要做的是:

Ibox myBox=new Rectangle();

然后,如果您決定使用不同類型的框(可能還有另一個(gè)庫,其中有一個(gè)更好的框),那么您可以將代碼切換到:

Ibox myBox=new OtherKindOfBox();

一旦你習(xí)慣了它,你就會(huì)發(fā)現(xiàn)這是一種很好的(實(shí)際上是必不可少的)工作方式。

另一個(gè)原因是,例如,如果您想要?jiǎng)?chuàng)建一個(gè)框列表并對(duì)每個(gè)框執(zhí)行一些操作,但是您希望該列表包含不同類型的框。在你能做的每一個(gè)盒子上:

myBox.close()

(假設(shè)iBox有一個(gè)CLOSE()方法),盡管myBox的實(shí)際類會(huì)根據(jù)您在迭代中的位置而改變。



查看完整回答
反對(duì) 回復(fù) 2019-07-17
?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊

使接口有用的是事實(shí)是,“您可以在以后更改您的想法并使用不同的實(shí)現(xiàn),并且只需要更改創(chuàng)建對(duì)象的唯一位置”。這不是問題。

真正的要點(diǎn)已經(jīng)在名稱中了:他們定義了一個(gè)界面任何人都可以實(shí)現(xiàn)來使用在該接口上操作的所有代碼。最好的例子是java.util.Collections提供各種專門在接口上操作的有用方法,如sort()reverse()List..這里的要點(diǎn)是,這段代碼現(xiàn)在可以用于排序或反轉(zhuǎn)。任何類實(shí)現(xiàn)List接口-不僅僅是ArrayListLinkedList,但也包括您自己編寫的類,這些類的實(shí)現(xiàn)方式可能是編寫以下內(nèi)容的人:java.util.Collections從沒想過。

同樣,您可以編寫在您定義的著名接口或接口上操作的代碼,其他人也可以使用您的代碼,而不必要求您支持他們的類。

接口的另一種常用用法是回調(diào)。例如,java.swing.tableT.ableCellRenderer,它允許您影響Swing表在特定列中顯示數(shù)據(jù)的方式。實(shí)現(xiàn)該接口,將一個(gè)實(shí)例傳遞給JTable,在表的呈現(xiàn)過程中,您的代碼將被調(diào)用來完成它的操作。



查看完整回答
反對(duì) 回復(fù) 2019-07-17
?
翻過高山走不出你

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊

我讀過的眾多用途之一是,如果沒有Java中的多繼承使用接口,就很難實(shí)現(xiàn):

class Animal{void walk() { } ........ //other methods and finallyvoid chew() { } //concentrate on this}

現(xiàn)在,想象一下這樣的情況:

class Reptile extends Animal { //reptile specific code here} //not a problem here

但,

class Bird extends Animal{...... //other Bird specific code} 
//now Birds cannot chew so this would a problem in the sense Bird classes can also call chew() method which is unwanted

更好的設(shè)計(jì)是:

class Animal{void walk() { } ........ //other methods }

動(dòng)物沒有咀嚼()方法,相反,它被放置在一個(gè)接口中,如下所示:

interface Chewable {void chew();}

讓爬行動(dòng)物類實(shí)現(xiàn)這一點(diǎn),而不是鳥類(因?yàn)轼B類不能咀嚼):

class Reptile extends Animal implements Chewable { }

在鳥類的情況下,簡單地說:

class Bird extends Animal { }


查看完整回答
反對(duì) 回復(fù) 2019-07-17
  • 3 回答
  • 0 關(guān)注
  • 359 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)