Java編程思想(第十章)

在Java中,一個類的定義可以放在另一個類裏面,這樣的類的稱爲內部類。內部類的格式如下:

package com.isoftstone.fulunyong;

public class Parcell {

    class Contents {
        private int i = 11;

        public int value() {
            return i;
        }
    }

    class Destination {
        private String label;

        Destination(String whereTo) {
            label = whereTo;
        }

        String readLabel() {
            return label;
        }
    }

    public void ship(String dest) {
        Contents contents=new Contents();
        Destination destination=new Destination(dest);
        System.out.println(destination.readLabel());
    }

    public static void main(String[] args) {
        Parcell parcell=new Parcell();
        parcell.ship("Tasmania");

    }

}

內部類具有以下特性:
1、內部類擁有所有其外部類的成員的訪問權;
2、成員內部類不能含有static修飾的變量和方法,因爲成員內部類需要先創建了外部類,才能創建它自己的;
3、內部類中生成外部類對象的引用,可以使用OutClassName.this;
4、從外部類的非靜態方法之外,創建某個內部類的對象:OutClassName.InnerClassName;

靜態的內部類也沒稱爲嵌套類,它與普通內部的區別:

(1)要創建嵌套類的對象,並不需要外圍類的對象;

(2)不能從嵌套類的對象中訪問非靜態的外圍類數據;

(3)嵌套類可以有static方法和域,還可以有嵌套類,普通內部類不可以。

我們知道在Java中的繼承是單繼承,就是一個Java類不能同時繼承兩個或兩個以上的類,但是我們可以根據內部類的特殊性質,曲線實現“多繼承”。比如B想要同時繼承E,F,我們可以這樣實現。

package com.isoftstone.fulunyong;

public class A extends E{

    public void a() {
        System.out.println("a");
    }

    class B extends F{

        public void b() {
            System.out.println("b");
            a();
            e();
        }


    }

    public static void main(String[] args) {
        B b=new A().new B();
        b.b();
        b.f();

    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章