久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

java 接口理解(2)

 李曉卡 2010-10-26
多重繼承是指一個子類可以有多個直接父類,,該子類可以全
部或部分繼承所有直接父類的數據成員及成員方法,。而Java出于安全性、簡化程序結構的考慮,,不支持類間的多繼承而只支持單繼承,。然而在
解決實際問題的過程中,在很多情況下僅僅依靠單繼承不能將復雜的問題描述清楚,。為了使Java程序的類間層次結構更加合理,,更符合實際問
題的本質,Java語言提供接口來實現多重繼承機制,。
 
(1) interface是聲明接口的關鍵字,可以把它看成一個特殊
類,。
(2) 接口名要求符合Java標識符規(guī)定,。
(3) 修飾符有兩種:public 和默認。public修飾的接口是公共
接口,,可以被所有的類和接口使用,;默認修飾符的接口只能被
同一個包中的其他類和接口使用。
(4) 父接口列表:接口也具有繼承性,。定義一個接口時可以
通過extends關鍵字聲明該接口是某個已經存在的父接口的派生接
口,,它將繼承父接口的所有屬性和方法。與類的繼承不同的是一
個接口可以有一個以上的父接口,,它們之間用逗號分隔,。
(5) 常量數據成員聲明:常量數據成員前可以有也可沒有修
飾符。修飾符是public final static和fina1 static,;接口中的數據成
員都是用 final修飾的常量,,寫法如下:
修飾符 數據成員類型 數據成員名=常量值

數據成員名=常量值
例如:
public final static double PI=3.14159;
final static int a=9,;
int SUM=100,;(等價于final static int SUM=100;)
(6) 抽象方法聲明:接口中的方法都是用abstract修飾的抽象
方法。在接口中只能給出這些抽象方法的方法名,、返回值和參
數列表,,而不能定義方法體,即這些接口僅僅是規(guī)定了一組信
息交換,、傳輸和處理的“接口”,。格式如下:
返回值類型 方法名(參數列表);
其中:接口中的方法默認為public abstract方法,。接口中方
法的方法體可以由Java語言書寫,,也可以由其他語言書寫,。方
法體由其他語言書寫時,接口方法由native修飾符修飾,。
從上面的格式可以看出,,定義接口與定義類非常相似。實
際上完全可以把接口理解成為一種特殊的類,,由常量和抽象方
法組成的特殊類,。一個類只能有一個父類,但是它可以同時實
現若干個接口,。這種情況下,,如果把接口理解成特殊的類,那
么這個類利用接口實際上就獲得了多個父類,,即實現了多重繼
承,。
接口定義僅僅是實現某一特定功能的一組功能的對外接口
和規(guī)范,而不能真正地實現這個功能,,這個功能的真正實現是
在“繼承”這個接口的各個類中完成的,,即要由這些類來具體定義
接口中各抽象方法的方法體。因而在Java中,,通常把對接口功能
的“繼承”稱為“實現”,。
定義接口注意事項
定義接口要注意以下幾點:
(1) 接口定義用關鍵字interface,而不是用class,。
(2) 接口中定義的數據成員全是final static,,即常量。
(3) 接口中沒有自身的構造方法,,所有成員方法都是抽象
方法,。
(4) 接口也具有繼承性,可以通過extends關鍵字聲明該接
口的父接口,。
類實現接口的注意事項
一個類要實現接口,,即一個類要調用多個接口時,要注意
以下幾點:
(1) 在類中,,用implements關鍵字就可以調用接口,。一個類
若要調用多個接口時,可在implements后用逗號隔開多個接口的
名字,。
(2) 如果實現某接口的類不是abstract的抽象類,,則在類的定
義部分必須實現指定接口的所有抽象方法,即為所有抽象方法
定義方法體,,而且方法頭部分應該與接口中的定義完全一致,,
即有完全相同的返回值和參數列表。
(3) 如果實現某接口的類是abstract的抽象類,則它可以不實
現該接口所有的方法,。但是對于這個抽象類的任何一個非抽象
的子類而言,,它們的父類所實現的接口中的所有抽象方法都必
須有實在的方法體。這些方法體可以來自抽象的父類,,也可以
來自子類自身,,但是不允許存在未被實現的接口方法。這主要
體現了非抽象類中不能存在抽象方法的原則,。
(4) 接口的抽象方法的訪問限制符都己指定為public,,所以類在實現方法時,必須顯式地使用public飾符,,否則將被系統(tǒng)警告為縮小了接口中
定義的方法的訪問控制范圍,。正是因為抽象的概念在問題領域沒有對應的具體概念,所以用以表征抽象概念的抽象類是不能夠實例化的,。
在面向對象的概念中,,我們知道所有的對象都是通過類來描繪的,但是反過來卻不是這樣,。并不是所有的類都是用來描繪對象的,,如果一個類
中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類,。抽象類往往用來表征我們在對問題領域進行分析、設計中得出的抽象概
念,,是對一系列看上去不同,,但是本質上相同的具體概念的抽象。
從某種意義上說,,interface是一種特殊形式的abstractclass,。
abstarctclass在Java語言中體現了一種繼承關系,要想使得繼承關系合理,,父類和派生類之間必須存在"isa"關系,,即父類和派生類在概念本
質上應該是相同的)。對于interface來說則不然,,并不要求interface的實現者和interface定義在概念本質上是一致的,,僅僅是實現了
interface定義的契約而已。abstractclass在Java語言中表示的是一種繼承關系,,一個類只能使用一次繼承關系,。但是,一個類卻可以實現多
個interface,。
接口(interface)可以說成是抽象類的特例,。接口中的所有方法都必須是抽象的,接口中的方法定義默認為public  abstract finable。
看一下他們在語法上的區(qū)別吧,!
   1,,抽象類里可以有構造方法,而接口內不能有構造方法,。
   2,,抽象類中可以有普通成員變量,而接口中不能有普通成員變量,。
   3,,抽象類中可以包含非抽象的普通方法,而接口中所有的方法必須是抽象的,,不能有非抽象的普通方法,。
   4,抽象類中的抽象方法的訪問類型可以是public ,,protected和默認類型,,但接口中的抽象方法只能是public類型的,并且默認即為
public abstract類型,。
   5,,抽象類中可以包含靜態(tài)方法,接口內不能包含靜態(tài)方法,。
   6,,抽象類和接口中都可以包含靜態(tài)成員變量,抽象類中的靜態(tài)成員變量的訪問類型可以任意,,但接口中定義的變量只能是public  static
類型,,并且默認為public static類型。
   7,,一個類可以實現多個接口,,但只能繼承一個抽象類。
再補充點兩者在應用上的區(qū)別:
   接口更多的是在系統(tǒng)框架設計方法發(fā)揮作用,,主要定義模塊之間的通信,,而抽象類在代碼實現方面發(fā)揮作用,可以實現代碼的重用

2.public abstract class A {  
  int i=1;  
  public void printI() {  
    System.out.println("i="+i);  
  }  
}  
 
public class B  extneds A{  
  int i=2;  
  public static void main(String[] args) {  
    B b=new B();  
    b.printI();  
  }  
}  輸出地結果為1
(1)子類B 的構造方法被調用,,實例化一個B對象,,B對象的成員被初始化
(2)jvm隱含的調用父類的構造方法,實例化一個A對象,A對象的成員被初始化,。
(3)由于A對象的printI()未被屏蔽,,所以調用的A對象的printI()函數。
那么,,在這里A的成員函數當然是訪問自己的成員變量了,。
類的繼承知識點
(1)java不支持多重繼承,也就是說子類至多只能有一個父類
(2)子類繼承了其父類中不是私有的成員變量和成員方法,作為自己的成員變量和方法
(3)子類中定義的成員變量和父類中定義的成員變量相同時,,則父類中的成員變量不能被繼承
(4)子類中定義的成員方法,,并且這個成員方法的名字,返回類型,,及參數個數和類型與父類的某個成員方法完全相同,,則父類的成員方法不
能被繼承。
super關鍵字在java中的作用是使被屏蔽的成員變量或者成員方法或變?yōu)榭梢?,或者說用來引用被屏蔽的成員變量和成員成員方法,。super是用
在子類中,目的是訪問直接父類中被屏蔽的成員,。

    本站是提供個人知識管理的網絡存儲空間,,所有內容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內容中的聯系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現有害或侵權內容,,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多