免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
歸納Java中的Interface(接口)
相對abstract class(抽象類)來講,interface則造出了“完全抽象的class”,絲毫不帶半點實現(xiàn)的內(nèi)容。且interface中的所有methods都是虛的空的,當(dāng)然,編譯器也強迫你這樣做??聪旅媸吕?div>       interface A{
              void x();//這里不需寫訪問權(quán)限,x()就自動成為了public void x()
              String Hello();
}
interface中的方法無需聲明,都會自動設(shè)為了public。
當(dāng)然,interface中的數(shù)據(jù)成員也變?yōu)榱藀ublic,static,final。
看例子:
class B implements A{
       String str="Hello";//這里的str很自然的變成了public static final int str;
       public void x(){
       //……//
       }
       public String Hello(){
              return str;
       }
}
要注意,當(dāng)某個類(like class B)實現(xiàn)了一個接口時,一定要把它實現(xiàn)的methods(函數(shù))標(biāo)明為public,否則編譯器不會讓你好過。
 
以上只是interface的普通用法罷了,更讓人興奮的是:它可以讓你實現(xiàn)原本以為java中沒有的“多重繼承”。即,你可以是個A,也可以是個B和C。看下面:
class father{}
interface Human{}
interface Boy{}
 
class Me extends father implements Human,Boy{}
 
呵呵,你們看到了,如語義,爸爸正繼承(extends)一個,但我的身份卻可以是“人類(human)”或者“男孩(boy)”。同樣,java中,只能繼承一個一般的Class(non-interface即非接口類),但你卻可以繼承多個interface,也可以說“interface讓你擁有多個身份”。這當(dāng)然更利于多態(tài)的應(yīng)用咯。
還有,interface也是可以繼承其它類的,但,只能是繼承另一個接口。如以下:
 
class A{}
abstract class B{}
interface C{}
 
//!interface D extends A{}
//!interface D extends B{}
interface D extends C{}//看到吧,接口只能繼承接口,繼承其它的話,編譯器回生氣喲
 
然后呢,咱們再看一個比上面復(fù)雜一點的例子,說明了你不能胡亂的把兩個接口同時實現(xiàn):
interface A{void a();}
interface B{void b();}
 
class Xa{
       
public void a(){}
}
class Xb{
       
public int b(){return 53;}
}
 
class Hero extends Xa implements A,B{
       
public void b(){}
//大家注意,為什么這兒實現(xiàn)了 A和B 兩個interface卻只實現(xiàn)了b()一個接口呢?后面分解
}
 
//!class ErrTest extends Xb implements B{}//這為什么報告錯誤呢?后面分解
 
public class Test {
       
static void mA(A a){//這兒之所以可以用a來調(diào)用是因為,下面會進行向上轉(zhuǎn)型,
                                   
//A的derived class reference傳到這里,當(dāng)然可以使用,下同。
              a.a();
       }
       
static void mB(B b){
              b.b();
       }
       
       
public static void main(String[] args) {
              Hero h
=new Hero();
              
              mA(h);
//向上轉(zhuǎn)型,因為上面接參的是Hero的base class
              mB(h);
       }
}
///:~
好了,例子看完了,下面來解釋上面的幾個現(xiàn)象:
NO1.class Hero為什么實現(xiàn)了 A和B 兩個interface卻只實現(xiàn)了b()一個接口呢?因為它還同時繼承了一個Xa類,而Xa中恰好又一個一模一樣的void a(),所以,在繼承的同時,“爸爸替兒子”自動的實現(xiàn)了a(),不用“兒子”親自動手。
但是注意,必須要是完全相同才行!即需要同參數(shù)列表、同返回值),否則就會?看下面:
NO2. ErrTest不能再寫下去是因為,它所繼承的B類的void a()與它所實現(xiàn)的Xb接口中的int a()產(chǎn)生沖突兩者名稱相同,但是返回值不一樣,導(dǎo)致編譯器不知道該使用哪一個或者應(yīng)該重寫等,所以會報出錯誤。這就是沖突。
所以,須提醒的是:盡量不要結(jié)合含同名參數(shù)的interface等,或者就干脆不要寫同名的函數(shù)。
 
Interface還有一重要功能,平常不為人所用的:產(chǎn)生常量群?。∮捎趇nterface中的數(shù)據(jù)成員會自動成為public static final,所以……如下:
public interface Months{
              
int 
JANURAUY
=1,//再次說明,常量都要全部用大寫,語義間用下劃線分開如: VAL_XX
                     FEBRUARY=2,
                     MARCH
=3;
}
       然后要用的話,就直接Months. JANURAUY*10類似的直接用就行了!完全OK?。〕壓糜茫。?/div>
提醒:interface的常量群眾的數(shù)據(jù)成員,因為是static靜態(tài)的,所以當(dāng)你首次使用這個常量群時,就會自動初始化里面的數(shù)據(jù),不管你使用多少次它的數(shù)值都不會再變了。如下:
public interface Vals{
       int VAL_A=(int)(Math.random()*10);
}
我們看到,VAL_A是由隨機數(shù)得值的,但當(dāng)你第一次使用它時,VAL_A被賦予了一個隨機數(shù)3.14,但以后不管你用多少次,都只是同一個數(shù)3.14。
 
然后呢,interface可以互相嵌套,既可以嵌在class中,也可以嵌在另一個interface中。
Interface的嵌套可以發(fā)展出很多有趣的性質(zhì)來,但是內(nèi)容過多,一時間無法全部寫下,so就此寫一小點吧,需要用時再做深究。
當(dāng)某一個interface嵌套到了另一個interface中時,則它一定會變成public,無法標(biāo)記為private”。
當(dāng)你實現(xiàn)某個interface時,根本無須實現(xiàn)嵌套在它里面的Other interfaces
此外,“private interface是無法在它所定義的class之外被發(fā)現(xiàn)的”。
 
好了,Interface(接口)就想到這里了。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
接口只用于定義類型,不應(yīng)該使用常量接口
Java接口 詳解(一)
Java中常量定義的幾種方式
2020回顧過往:Java命名規(guī)范及易混淆知識歸納
Java接口 interface 詳解
《Java面向?qū)ο蟪绦蛟O(shè)計》09 抽象類與接口寫字字帖
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服