2019-06-30 Java接口、內(nèi)部類和包

接口

一媳握、接口定義

接口是由常量和抽象方法組成的特殊類碱屁。
接口是對(duì)abstract類的進(jìn)一步擴(kuò)展。
接口中的方法都是未實(shí)現(xiàn)的(類似于抽象方法)蛾找,目的是在實(shí)現(xiàn)接口的類之間建立一種協(xié)議娩脾。
接口中的變量都是常量。
定義:

[public] interface 接口名 [extends 父接口名列表]{
        [public][static][final]域類型  域名=常量;    //常量域聲明
        [public][abstract][native] 返回值  方法名(參數(shù)列表)[throw 異常列表]; //抽象方法聲明
}

接口定義需注意:
1)interface是聲明接口的關(guān)鍵字打毛。
2)聲明接口可給出訪問控制符柿赊。
3)接口名要求符合Java標(biāo)識(shí)符的規(guī)定。
4)接口也有繼承性幻枉,定義一個(gè)接口時(shí)碰声,可以通過extends關(guān)鍵字聲明該接口的是某個(gè)已經(jīng)存在的父類接口的派生接口,它將繼承父接口的所有屬性和方法熬甫。一個(gè)接口還可以繼承多個(gè)父接口胰挑,父接口間用逗號(hào)分隔。
5)系統(tǒng)默認(rèn)接口中所有屬性的修飾都是public static final。
6)系統(tǒng)默認(rèn)接口中所有方法的修飾都是public abstract洽腺。

  • 接口名修飾
    public: 無任何訪問限制
    無修飾: 僅限于本包中

二脚粟、實(shí)現(xiàn)接口

一個(gè)類符合某個(gè)或一組接口,利用implements
聲明格式:

[<修飾符>]class <類名> [extends<超類名>][implements<接口名1>蘸朋,<接口名2>核无,…]

例:transport.java

interface fee {
    public void charge();
}
class car implements fee {
    public void charge() {
        System.out.println("car");
    }
}
class bus implements fee {
    public void charge() {
        System.out.println("bus");
    }
}
class transport {
    public static void main(String args[]) {
        bus a=new bus();
        car b=new car();
        a.charge();
        b.charge();
    }
}

例:circle.java

interface theshape{
    double pi=3.14;
    double getarea();
}
interface shape{
    void show();
}
public class circle implements theshape,shape{
    int r;
    circle(int r){
        this.r=r;
    }
    public double getarea() {
        return r*r*pi;
    }
    public void show() {
        System.out.println("r="+r+"\nthe area="+getarea());
    }
    public static void main(String args[]) {
        circle c=new circle(5);
        c.show();
    }
}

運(yùn)行結(jié)果:

r=5
the area=78.5

內(nèi)部類

在一個(gè)類中定義另一個(gè)類,這個(gè)類就叫做內(nèi)部類或內(nèi)置類藕坯,也稱嵌套類团南,包含內(nèi)部類的類稱為外部類。

  • 內(nèi)部類的規(guī)定:
    在另一個(gè)類或者一個(gè)接口中聲明類炼彪。
    在另一個(gè)接口或者一個(gè)類中聲明接口吐根。
    在一個(gè)方法中聲明一個(gè)類。
  • 特性:
  1. 一般用在定義它的類或語句塊之內(nèi)辐马,在外部引用它時(shí)必須給出完整的名稱拷橘,名稱不能與包含它的類名相同。
  2. 可以使用包含它的外部類的靜態(tài)數(shù)據(jù)成員和實(shí)例數(shù)據(jù)成員喜爷,也可以使用它所在方法的局部變量冗疮。
  3. 可以聲明為abstract,private檩帐,或protected术幔,若被聲明為static,就變成了頂層類湃密,不能再使用局部變量诅挑。
  4. 若在內(nèi)部類中聲明任何static成員,則該內(nèi)部類 必須聲明為static.

一泛源、成員類

例:outerone.java

public class outerone {
    private int x=3;
    innerone ino=new innerone(); //外部類有一個(gè)屬性指向創(chuàng)建的內(nèi)部類對(duì)象
    public class innerone{
        private int y=5;
        public void innermethod(){
            System.out.println("y is "+y);
        }
        public void innermethod2() {
            System.out.println("x2 is "+x); //訪問外部類變量
        }
    }//內(nèi)部類結(jié)束
    public void outermethod() {
        System.out.println("x is"+x);
        ino.innermethod();
        ino.innermethod2();
    }
    public static void main(String args[]) {
        outerone my=new outerone();
        my.outermethod();
    }
}

運(yùn)行結(jié)果:

x is3
y is 5
x2 is 3

二拔妥、靜態(tài)內(nèi)部類

定義為static的內(nèi)部類稱為靜態(tài)內(nèi)部類。靜態(tài)內(nèi)部類將自動(dòng)轉(zhuǎn)化為頂層類 达箍。不能引用外部類成員或其它內(nèi)部類成員没龙。
例:statictest.java

public class statictest {
    public static class person {
        private int age;
        private String name;
        static int count=0;
        person(String n,int a){
            name=n;
            age=a;
            count++;
        }
        public void show(){
            System.out.println("count="+count+"\t"+name+"\t"+age);
        }
    }
    public static void main(String args[]) {
        statictest.person person1=new statictest.person("lili", 18);
        person1.show();
        statictest.person person2=new statictest.person("limei",10);
        person2.show();
    }
}

運(yùn)行結(jié)果;

count=1 lili    18
count=2 limei   10

三、局部內(nèi)部類

例:testpart.java

public class testpart {
    public static void main(String args[]) {
        final int i = 10;
        class person {
            public String name;
            public void show() {
                System.out.println(i);
                System.out.println(this.name);
            }
        }
        person p = new person();
        p.name = "lili";
        p.show();
    }
}

運(yùn)行結(jié)果:

10
lili

四幻梯、匿名內(nèi)部類

一、包的創(chuàng)建

包的創(chuàng)建就是將源程序文件中的接口和類納入指定的包努释。
例:

package graphics;
             public class Circle extends Graphic implements Draggable {
                . . .
           }

利用包成員的規(guī)范名(包名+類名)

          graphics.Circle myCir = new graphics.Circle();

引入(import)包成員名

    import graphics.Circle; 
    … …
    Circle myCir = new Circle(); 

引入(import)整個(gè)包成員

    import graphics.*; 
    … …
    Circle myCir = new Circle(); 

例:circlearea.java

public class circlearea {
    public static void main(String args[]) {
        final float pi=3.14f;
        float r=3.6f,area;
        area=pi*r*r;
        System.out.println("area("+r+")="+area);
    }
}

運(yùn)行結(jié)果:

area(3.6)=40.694397
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末碘梢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子伐蒂,更是在濱河造成了極大的恐慌煞躬,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異恩沛,居然都是意外死亡在扰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門雷客,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芒珠,“玉大人,你說我怎么就攤上這事搅裙≈遄浚” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵部逮,是天一觀的道長娜汁。 經(jīng)常有香客問我,道長兄朋,這世上最難降的妖魔是什么掐禁? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮颅和,結(jié)果婚禮上傅事,老公的妹妹穿的比我還像新娘。我一直安慰自己融虽,他們只是感情好享完,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著有额,像睡著了一般般又。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上巍佑,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天茴迁,我揣著相機(jī)與錄音,去河邊找鬼萤衰。 笑死堕义,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的脆栋。 我是一名探鬼主播倦卖,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼椿争!你這毒婦竟也來了怕膛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤秦踪,失蹤者是張志新(化名)和其女友劉穎褐捻,沒想到半個(gè)月后掸茅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡柠逞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年昧狮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片板壮。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逗鸣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出个束,到底是詐尸還是另有隱情慕购,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布茬底,位于F島的核電站沪悲,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏阱表。R本人自食惡果不足惜殿如,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望最爬。 院中可真熱鬧涉馁,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至帮坚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間互艾,已是汗流浹背试和。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纫普,地道東北人阅悍。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像昨稼,于是被迫代替她去往敵國和親节视。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355