回覆列表
  • 1 # 你永遠追不上的巨人

    介面不可以例項化,但是介面物件可以指向它的實現類物件。介面可以看做特殊的抽象類,只是所有的方法都是抽象方法(沒有實現的方法),介面的方法都是預設public abstract的,所以介面不能被例項化。舉個列子:List Set Map都是介面,使用時先實現他們的類物件:List

  • 2 # 使用者3920320951631

    我也沒怎麼搞懂啊 相互探討吧 下面是別人說的,看一看也許有幫助:

    介面也是可以例項化的,但是介面的例項化其實更傾向於邏輯性的操作,

    打個比方,我有一個介面名為水果,裡面有“榨汁”這個方法,而我某部分程式的邏輯行為就是呼叫某個水果例項的“榨汁”方法。但是如果水果沒用透過注入(即在某段程式將某種實現了水果介面的類的例項,比如蘋果什麼的例項,賦值給這個介面的例項),是不具有現實功能的,即該程式碼片段僅僅是一個行為邏輯。

    在你追問的的問題中,該介面的例項化,其實是匿名地臨時地創造了具有某個介面功能的類的例項,往往是我們需要實現某種功能,但這個類的實現,並不具有現實意義,也不便於維護和管理,的一種妥協行為,某種意義上破壞了面向物件的特性,但是方便了程式設計人員。你可以看做他其實是某個實現了該介面的類的例項,而不是這個介面的例項。

    這一個講的好像更好:

    介面可以例項化

    一般物件比如有個具體的類Person已定義好,要例項化它, 採取的語法是 Person objPerson = new Person();

    但介面(如IConnection)不能這麼做,其不能直接New 自己,如 IConnection objIConnection = new IConnection(),

    這就是說"照例不可以生成介面的物件"的含義.

    但面向物件都具有多型,可以向上轉型, 比如某個類實現了該介面,如類Connection實現了該介面,則Connection類的

    例項化物件可以給IConnection介面. 如 IConnection objIConnection = new Connection()

    然後程式設計都基於介面進行操作,這樣脫離了具體的類的實現,在某些場合就更靈活和易於擴充.

    把變的東西抽象出來了,成了介面,反倒就讓程式碼相對固定了,能適應變化的情況.

    介面不能實列化,但是可能透過某些類建立介面的對類

    看上面所說介面不能例項化,這是不容置疑的

    只是可以這樣用:

    例項化物件可以給IConnection介面. 如 IConnection objIConnection = new Connection()

    介面不可以例項化。但是介面物件可以指向它的實現類物件。

  • 中秋節和大豐收的關聯?
  • 利潤分配——未分配利潤的借貸方表示什麼?