日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java接口學(xué)習(xí)筆記

一、Java接口基礎(chǔ)知識

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、庫爾勒網(wǎng)站維護、網(wǎng)站推廣。

1, Java語言不支持一個類有多個直接的父類(多繼承),但可以實現(xiàn)(implements)多個接口,間接的實現(xiàn)了多繼承.

2, 與Java接口相關(guān)的設(shè)計模式:

1, 定制服務(wù)模式

設(shè)計精粒度的接口,每個Java接口代表相關(guān)的一組服務(wù),通過繼承來創(chuàng)建復(fù)合接口

2, 適配器模式

當每個系統(tǒng)之間接口不匹配時,用適配器來轉(zhuǎn)換接口

3, 默認適配器模式

為接口提供簡單的默認實現(xiàn)

4, 代理模式

為Java接口的實現(xiàn)類創(chuàng)建代理類,使用者通過代理來獲得實現(xiàn)類的服務(wù)

5, 標識類型模式

用接口來標識一種沒有任何行為的抽象類型

6, 常量接口模式

在接口中定義靜態(tài)常量,在其它類中通過import static語句引入這些常量

Java接口的特征歸納:

1, Java接口中的成員變量默認都是public,static,final類型的(都可省略),必須被顯示初始化,即接口中的成員變量為常量(大寫,單詞之間用"_"分隔)

2, Java接口中的方法默認都是public,abstract類型的(都可省略),沒有方法體,不能被實例化

 
 
 
  1. public interface A
  2.    {
  3.     int CONST = 1; //合法,CONST默認為public,static,final類型
  4.     void method(); //合法,method()默認為public,abstract類型
  5.     public abstract void method2(); //method2()顯示聲明為public,abstract類型
  6.    }

3, Java接口中只能包含public,static,final類型的成員變量和public,abstract類型的成員方法

 
 
 
  1. public interface A
  2.   {
  3.    int var; //錯,var是常量,必須顯示初始化 
  4.    void method(){...};   //錯,接口中只能包含抽象方法
  5.    protected void method2(); //錯,接口中的方法必須是public類型
  6.    static void method3(){...};   //錯,接口中不能包含靜態(tài)方法
  7.   }

4, 接口中沒有構(gòu)造方法,不能被實例化

 
 
 
  1. public interface A
  2.   {
  3.    public A(){...}; //錯,接口中不能包含構(gòu)造方法
  4.    void method();
  5.   }

5, 一個接口不能實現(xiàn)(implements)另一個接口,但它可以繼承多個其它的接口

 
 
 
  1. public interface A
  2.  {
  3.   void methodA();
  4.  }
  5.  public interface B
  6.  {
  7.   void methodB();
  8.  }
  9.  public interface C extends A, B   //C稱為復(fù)合接口
  10.  {
  11.   void methodC();
  12.  }
  13.  public interface C implements A{...}   //錯

6, Java接口必須通過類來實現(xiàn)它的抽象方法

public class A implements B{...}

7, 當類實現(xiàn)了某個Java接口時,它必須實現(xiàn)接口中的所有抽象方法,否則這個類必須聲明為抽象的

8, 不允許創(chuàng)建接口的實例(實例化),但允許定義接口類型的引用變量,該引用變量引用實現(xiàn)了這個接口的類的實例

 
 
 
  1. public class B implements A{}
  2.    A a = new B(); //引用變量a被定義為A接口類型,引用了B實例
  3.    A a = new A(); //錯誤,接口不允許實例化

9, 一個類只能繼承一個直接的父類,但可以實現(xiàn)多個接口,間接的實現(xiàn)了多繼承.

public class A extends B implements C, D{...} //B為class,C,D為interface

4, 通過接口,可以方便地對已經(jīng)存在的系統(tǒng)進行自下而上的抽象,對于任意兩個類,不管它們是否屬于同一個父類,只有它們存在相同的功能,就能從中抽象出一個接口類型.對于已經(jīng)存在的繼承樹,可以方便的從類中抽象出新的接口,但從類中抽象出新的抽象類卻不那么容易,因此接口更有利于軟件系統(tǒng)的維護與重構(gòu).對于兩個系統(tǒng),通過接口交互比通過抽象類交互能獲得更好的松耦合.

5, 接口是構(gòu)建松耦合軟件系統(tǒng)的重要法寶,由于接口用于描述系統(tǒng)對外提供的所有服務(wù),因此接口中的成員變量和方法都必須是public類型的,確保外部使用者能訪問它們,接口僅僅描述系統(tǒng)能做什么,但不指明如何去做,所有接口中的方法都是抽象方法,接口不涉及和任何具體實例相關(guān)的細節(jié),因此接口沒有構(gòu)造方法,不能被實例化,沒有實例變量.

二, 比較抽象類與接口

1, 抽象類與接口都位于繼承樹的上層

相同點

1, 代表系統(tǒng)的抽象層,當一個系統(tǒng)使用一顆繼承樹上的類時,應(yīng)該盡量把引用變量聲明為繼承樹的上層抽象類型,這樣可以提高兩個系統(tǒng)之間的送耦合

2, 都不能被實例化

3, 都包含抽象方法,這些抽象方法用于描述系統(tǒng)能提供哪些服務(wù),但不提供具體的實現(xiàn)

不同點:

1, 在抽象類中可以為部分方法提供默認的實現(xiàn),從而避免在子類中重復(fù)實現(xiàn)它們,這是抽象類的優(yōu)勢,但這一優(yōu)勢限制了多繼承,而接口中只能包含抽象方法.由于在抽象類中允許加入具體方法,因此擴展抽象類的功能,即向抽象類中添加具體方法,不會對它的子類造成影響,而對于接口,一旦接口被公布,就必須非常穩(wěn)定,因為隨意在接口中添加抽象方法,會影響到所有的實現(xiàn)類,這些實現(xiàn)類要么實現(xiàn)新增的抽象方法,要么聲明為抽象類

2, 一個類只能繼承一個直接的父類,這個父類可能是抽象類,但一個類可以實現(xiàn)多個接口,這是接口的優(yōu)勢,但這一優(yōu)勢是以不允許為任何方法提供實現(xiàn)作為代價的三, 為什么Java語言不允許多重繼承呢?當子類覆蓋父類的實例方法或隱藏父類的成員變量及靜態(tài)方法時,Java虛擬機采用不同的綁定規(guī)則,假如還允許一個類有多個直接的父類,那么會使綁定規(guī)則更加復(fù)雜,

因此,為了簡化系統(tǒng)結(jié)構(gòu)設(shè)計和動態(tài)綁定機制,Java語言禁止多重繼承.而接口中只有抽象方法,沒有實例變量和靜態(tài)方法,只有接口的實現(xiàn)類才會實現(xiàn)接口的抽象方法(接口中的抽象方法是通過類來實現(xiàn)的),因此,一個類即使有多個接口,也不會增加Java虛擬機進行動態(tài)綁定的復(fù)雜度.因為Java虛擬機永遠不會把方法與接口綁定,而只會把方法與它的實現(xiàn)類綁定.四, 使用接口和抽象類的總體原則:

1, 用接口作為系統(tǒng)與外界交互的窗口站在外界使用者(另一個系統(tǒng))的角度,接口向使用者承諾系統(tǒng)能提供哪些服務(wù),站在系統(tǒng)本身的角度,接口制定系統(tǒng)必須實現(xiàn)哪些服務(wù),接口是系統(tǒng)中最高層次的抽象類型.通過接口交互可以提高兩個系統(tǒng)之間的送耦合系統(tǒng)A通過系統(tǒng)B進行交互,是指系統(tǒng)A訪問系統(tǒng)B時,把引用變量聲明為系統(tǒng)B中的接口類型,該引用變量引用系統(tǒng)B中接口的實現(xiàn)類的實例。

 
 
 
  1. public interface B
  2.  {
  3.  }
  4.  public class C implements B
  5.  {
  6.  }
  7.  public class A
  8.  {
  9.  }
  10.  B a = new C();

2, Java接口本身必須非常穩(wěn)定,Java接口一旦制定,就不允許隨遇更加,否則對外面使用者及系統(tǒng)本身造成影響

3, 用抽象類來定制系統(tǒng)中的擴展點

抽象類來完成部分實現(xiàn),還要一些功能通過它的子類來實現(xiàn)


文章標題:Java接口學(xué)習(xí)筆記
網(wǎng)站網(wǎng)址:http://www.5511xx.com/article/dpsgcpg.html