欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中類(lèi)與接口的區(qū)別個(gè)人總結(jié)

 更新時(shí)間:2015年06月16日 10:32:17   投稿:junjie  
這篇文章主要介紹了C#中類(lèi)與接口的區(qū)別個(gè)人總結(jié),本文講解了類(lèi)與接口的區(qū)別、接口的用處主要體現(xiàn)在下面幾個(gè)方面、一些接口的疑問(wèn)等內(nèi)容,需要的朋友可以參考下

一.類(lèi)與接口的區(qū)別

類(lèi):描述了一個(gè)實(shí)體,包括實(shí)體的狀態(tài),也包括實(shí)體可能發(fā)出的動(dòng)作。

接口:定義了一個(gè)實(shí)體可能發(fā)出的動(dòng)作。但是只是定義了這些動(dòng)作的原型,沒(méi)有實(shí)現(xiàn),也沒(méi)有任何狀態(tài)信息。

1.接口與類(lèi)區(qū)別:

(1)接口有點(diǎn)象一個(gè)規(guī)范、一個(gè)協(xié)議,是一個(gè)抽象的概念;

(2)而類(lèi)則是實(shí)現(xiàn)了這個(gè)協(xié)議,滿足了這個(gè)規(guī)范的具體實(shí)體,是一個(gè)具體的概念。

(3)從程序角度,簡(jiǎn)單理解,接口就是函數(shù)聲明,類(lèi)就是函數(shù)實(shí)現(xiàn)。需要注意的是同一個(gè)聲明可能有很多種實(shí)現(xiàn)。

2.接口與抽象類(lèi)的區(qū)別:

(1)A class can implement any number of interfaces but can subclass at most one abstract class.

(2)An abstract class can have nonabstract methods, which are usually instance of the TEMPLATE METHOD pattern. All the methods of an interface are abstract,

whether or not this declaration is explicit.

(3)An abstract class can declare instance variable that its subclass inherit. An interface cannot declare instance variables, although it can establish static final fields.

(4)An abstract class can define constructors, an interface cannot.

(5)An abstract class can have methods whose visibility is protected, private, or none(package);every method in an interface must be public.

(6)An abstract class inherits form Object, including such method as clone() and equals().

二. 接口的用處主要體現(xiàn)在下面幾個(gè)方面:

(1)通過(guò)接口可以實(shí)現(xiàn)不相關(guān)類(lèi)的相同行為,而不需要了解對(duì)象所對(duì)應(yīng)的類(lèi)。

(2)通過(guò)接口可以指明多個(gè)類(lèi)需要實(shí)現(xiàn)的方法。

(3)通過(guò)接口可以了解對(duì)象的交互界面,而不需了解對(duì)象所對(duì)應(yīng)的類(lèi)。

三.一些接口的疑問(wèn):

1、從書(shū)中看到的是java程序的接口中只定義了常量及空方法,空的方法有什么用呢,還要在類(lèi)中寫(xiě)方法體,那還要接口干什么。

答:接口中定義類(lèi)方法的原型,但是不能說(shuō)是空方法,因?yàn)榭辗椒ǖ囊馑际怯袑?shí)現(xiàn)體,只不過(guò)實(shí)現(xiàn)體是空操作。實(shí)際上接口沒(méi)有定義任何實(shí)現(xiàn)體。具體的實(shí)現(xiàn)體都是在實(shí)現(xiàn)接口的類(lèi)中,接口只是定義了這些方法的調(diào)用方式。

你當(dāng)然也可以不用接口,直接在類(lèi)里面寫(xiě)方法,但是如果你的一組方法需要在很多類(lèi)里實(shí)現(xiàn),那么把它們抽象出來(lái),做成一個(gè)接口規(guī)范,不是更好么?

2、一個(gè)程序中寫(xiě)了2個(gè)接口,并在同一個(gè)類(lèi)中寫(xiě)方法體,這與多繼承有什么關(guān)系。

答:一個(gè)類(lèi)描述了一個(gè)實(shí)體,這個(gè)實(shí)體可能是一個(gè)復(fù)雜的對(duì)象,它的動(dòng)作很多,如果把這些動(dòng)作分類(lèi),用接口a定義其中的某一組動(dòng)作,接口b定義其中的另外一組動(dòng)作,這樣的結(jié)構(gòu),比較清楚。

這種方式具備了多繼承的優(yōu)點(diǎn),避免了多繼承的缺陷。實(shí)際上在歷史上,接口在很大程度上,是為了解決多繼承帶來(lái)的種種問(wèn)題而設(shè)計(jì)出來(lái)的。

3、包中那些已定義的接口,怎么知道那里面定義了什么方法。

答:接口里定義了方法的輸入輸出,這些都是協(xié)議,具體的實(shí)現(xiàn)都在每個(gè)類(lèi)中。對(duì)于很多只需要抽象接口的地方,不需要知道具體的類(lèi)是什么,只要這個(gè)類(lèi)實(shí)現(xiàn)了這個(gè)接口就可以了。

相關(guān)文章

  • Unity實(shí)現(xiàn)相機(jī)截圖功能

    Unity實(shí)現(xiàn)相機(jī)截圖功能

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)相機(jī)截圖功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C# WebApi 接口傳參詳解

    C# WebApi 接口傳參詳解

    這篇文章主要介紹了C# WebApi 接口傳參詳解,本篇打算通過(guò)get、post、put、delete四種請(qǐng)求方式分別談?wù)劵A(chǔ)類(lèi)型(包括int/string/datetime等)、實(shí)體、數(shù)組等類(lèi)型的參數(shù)如何傳遞。感興趣的小伙伴們可以參考一下
    2018-07-07
  • C#基于Windows服務(wù)的聊天程序(1)

    C#基于Windows服務(wù)的聊天程序(1)

    這篇文章主要為大家詳細(xì)介紹了C#基于Windows服務(wù)的聊天程序的第一篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • C#中comboBox實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)

    C#中comboBox實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)

    給大家分享了C#中comboBox實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)的全部代碼,代碼經(jīng)過(guò)測(cè)試,有興趣的朋友跟著做一下。
    2018-03-03
  • C#播放背景音樂(lè)的方法小結(jié)

    C#播放背景音樂(lè)的方法小結(jié)

    這篇文章主要介紹了C#播放背景音樂(lè)的方法,實(shí)例總結(jié)了C#播放背景音樂(lè)的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • C#并發(fā)編程之a(chǎn)sync和await關(guān)鍵字詳解

    C#并發(fā)編程之a(chǎn)sync和await關(guān)鍵字詳解

    對(duì)于?async?和?await?兩個(gè)關(guān)鍵字,對(duì)于一線開(kāi)發(fā)人員再熟悉不過(guò)了,到處都是它們的身影,下面小編就來(lái)和大家記錄匯總下它們的使用吧
    2023-07-07
  • Unity屏幕雪花另類(lèi)實(shí)現(xiàn)方式示例

    Unity屏幕雪花另類(lèi)實(shí)現(xiàn)方式示例

    這篇文章主要介紹了Unity屏幕雪花另類(lèi)實(shí)現(xiàn)方式示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 詳解C# Protobuf如何做到0分配內(nèi)存的序列化

    詳解C# Protobuf如何做到0分配內(nèi)存的序列化

    這篇文章主要介紹了詳解C# Protobuf如何做到0分配內(nèi)存的序列化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • c#基礎(chǔ)系列之System.String的深入理解

    c#基礎(chǔ)系列之System.String的深入理解

    這篇文章主要給大家介紹了關(guān)于c#基礎(chǔ)系列之System.String的深入理解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • C#使用 NAudio 實(shí)現(xiàn)音頻可視化的方法

    C#使用 NAudio 實(shí)現(xiàn)音頻可視化的方法

    這篇文章主要介紹了[C#] 使用 NAudio 實(shí)現(xiàn)音頻可視化的相關(guān)資料,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05

最新評(píng)論