簡單的例項理解介面的偉大意義

2021-09-30 10:16:16 字數 3500 閱讀 6360

首先,我們必須明確,介面是乙個類。

「介面是乙個特殊的類,又是乙個特別有意義的類,不是因為它的特殊,而是因為它的意義,叫它介面更合適,但不能忘了,它仍是類。」

「介面是乙個只有宣告,沒有實現的類。」

很多人糾結於介面只是乙個標準,是乙個契約,而忘記了它的意義。

下面我們來看這樣乙個問題:

話說有家影視公司選拔偶像派男主角,導演說了,男演員,身高是王道。於是有下面**:

[csharp]view plain

copy

print?

public

class actor  

public

string name  

}  public

int height  

}  public

int compareto(object obj)  

public

string getname()  

}  

public class actor

public string name

}public int height

}public int compareto(object obj)

public string getname()

}

這個類,除了可以存放男演員的基本資訊,還定義了乙個函式

public

int compareto(object obj),因為,我們要比較男演員的身高,用身高判斷哪個演員更好。

有了這個類,後面,你可以比較輕鬆地編寫**,判斷是劉德華更優秀,還是潘長江更優秀了,這個**,我這裡就略過去了….

(兒童不宜,此處省略1000行)……………….

現在的問題是,明天又要選撥女演員了,導演說了,女演員,苗條是王道。女演員的這個類,你肯定是要做的,只是….

只是,我剛才略過去的,讓你編寫的**,你是不是還要再重新編寫呢????

這等於又重新編寫了乙個程式。

這時,我們就想到了介面,我們來接著看**吧:

我先做乙個介面,這個介面:

[csharp]view plain

copy

print?

namespace westgarden.iplayer  

}  

namespace westgarden.iplayer

}

這個介面,定義了兩個函式,乙個,當然是要進行比較,標準由你定,你說是導演定的,那更好,不用你費腦子了。

我們把剛才做的男演員的類,按照這個介面的標準來實現,也就是繼承這個介面:

[csharp]view plain

copy

print?

using system;  

using westgarden.iplayer;  

namespace westgarden.dal  

public

string name  

}  public

int height  

}  public

int compareto(object obj)  

public

string getname()  

}  }  

using system;

using westgarden.iplayer;

namespace westgarden.dal

public string name

}public int height

}public int compareto(object obj)

public string getname()

}}

順手,把女演員的類也做了吧:

[csharp]view plain

copy

print?

using system;  

using westgarden.iplayer;  

namespace westgarden.dal  

public

string name  

}  public

int weight  

}  public

int compareto(object obj)  

public

string getname()  

}  }  

using system;

using westgarden.iplayer;

namespace westgarden.dal

public string name

}public int weight

}public int compareto(object obj)

public string getname()

}}

這時,我們在應用層這樣編寫**:

[csharp]view plain

copy

print?

protected

void page_load(object sender, eventargs e)  

public

void whoisbetter(iselectplayer a, iselectplayer b)    

protected void page_load(object sender, eventargs e)

public void whoisbetter(iselectplayer a, iselectplayer b)

注意:

我們做的這個函式,

public

void whoisbetter(iselectplayer a,iselectplayer b)

這個函式,形參是

iselectplayer

,是介面,我認為,介面的意義,就在這裡。

你實現介面的類是男演員也好,女演員也好,男主角也好、女主角也好、男配角也好、女本角也好、男群眾演員也好、女群眾演員也好,只要你繼承的是我這個

iselectplayer

,或者,你習慣於說,遵守了我這個介面的標準、或者契約,我這段**,都不需要改變!!

這和那個比方是一樣的,不管你插在usb介面的是u盤,還是行動硬碟,還是什麼***,還是mp4,還是你新發明的什麼東西,只要你能插在我的usb口上,我主機都不需要做任何改變,直接在上面讀取或者寫入資料。

這個,是硬體介面的意義所在,也是我們這個

iselectplayer

類的意義所在,因為它有了這個偉大的意義,才把它改叫為介面的,因為,它象usb介面一樣工作著……

在些一併感謝!

簡單的例項理解介面的偉大意義

asp.net基礎知識 簡單的例項理解介面的偉大意義 yousuosi 2012 5 26 首先,我們必須明確,介面是乙個類。介面是乙個特殊的類,又是乙個特別有意義的類,不是因為它的特殊,而是因為它的意義,叫它介面更合適,但不能忘了,它仍是類。介面是乙個只有宣告,沒有實現的類。很多人糾結於介面只是乙...

介面的個人理解,簡單易懂

1,內部介面,在乙個類中定義乙個介面,那麼這個類就可以通過這個介面去操作外部類的屬性了和方法了。內部介面的精髓 1 通過繼承該類中的介面,並且傳入繼承介面的物件,可以實現安對該類屬性的修改 2 並且進行實現,可以對物件的屬性直接進行修改 預留介面是等著實現的類被呼叫,注意這裡的被呼叫關係 2,繼承的...

c 例項簡單理解多型 繼承和介面

c 這種完全物件導向的程式語言提供了兩個重要的特性 繼承和多型 簡單定義 不同的物件對同一訊息作出不同的響應就是多型。繼承是使用已存在的類的定義作為基礎建立新類的技術,新類的定義可以增加新的資料或新的功能,也可以用已存在的類的功能。下面用例項來理解 1最簡單的繼承 using system usin...