java筆記12 內部類

2021-07-03 06:57:33 字數 1895 閱讀 7246

1.     內部類

將乙個類定義在另乙個類的裡面,裡面那個類就稱為內部類(內建類,巢狀類)。

2.      內部類分類

成員內部類:在成員變數位置上的內部類

靜態內部類:靜態的內部類

方法內部類:定義在方法中的內部類

匿名內部類:匿名的內部類

3.    內部類訪問規則

內部類可以直接訪問外部類中的成員,包括私有成員。

而外部類要訪問內部類中的成員必須要建立內部類的物件。

4.    

成員內部類

當內部類定義在外部類中的成員位置上,可以使用一些成員修飾符修飾

private

、static。

1、預設修飾符。

直接訪問內部類格式:外部類名

.內部類名

變數名= 

外部類物件

.內部類物件;

outer.inner in= new outer.new inner();//

這種形式很少用。

但是這種應用不多見,因為內部類之所以定義在內部就是為了封裝。想要獲取內部類物件通常都通過外部類的方法來獲取。這樣可以對內部類物件進行控制。 2

、私有修飾符。

通常內部類被封裝,都會被私有化,不讓其他程式直接訪問。 3

、靜態修飾符(也就是靜態內部類)。

如果內部類被靜態修飾,相當於外部類,會出現訪問侷限性,

只能訪問外部類中的靜態成員。

注意:如果內部類中定義了靜態成員,那麼該內部類必須是靜態的。

示例:

public class test5

} class outer

//建立內部類,並定義內部類函式,呼叫外部私有成員變數和函式

class inner

}//定義乙個呼叫內部類函式的函式,如果在outer()中呼叫內部類函式,會變成死迴圈。

void outershow()

}

5.    

方法內部類(區域性內部類)

1、不可以被成員修飾符修飾

2、可以直接訪問外部類中的成員,因為還持有外部類中的引用

3、可以訪問所在區域性中的區域性變數,但必須是被final修飾的。

public class h_04inter

}class outer

}new inner().function();//必須放在下面,方法中的**是按順序執行的

}}

結果:7

備註:在jdk1.8中,區域性內部類訪問的區域性變數可以不用final修飾(不加final可以通過編譯),但是變數實際上仍具有final特性。

原因:區域性變數是在棧記憶體中,類物件時載入在堆記憶體,類的生命週期比區域性變數長。

6.      匿名內部類

6.1  定義

沒有名字的內部類。就是內部類的簡化形式。一般只用一次就可以用這種形式。匿名內部類其實就是乙個匿名子類物件。想要定義匿名內部類:需要前提,內部類必須繼承乙個類或者實現介面。

6.2  格式

new 父類或者介面()

定義子類的內容

}.方法名();

匿名內部類中定義的方法最好不要超過2個,

方法少的時候直接呼叫方便。

方法多的時候用實名內部類。

public class h_04nimingintertest

}inte***ce inter

class test};}

}

結果:test

6.3  沒有父類也沒有介面,可以通過object類來實現匿名內部類,但是不要例項物件,因為object類中沒有子類的特殊方法。

new object()

.function();

JAVA筆記 內部類

成員內部類 普通呼叫方法 outer.inner oi new outer new inner 靜態呼叫方法 1.outer.inner oi new outer.inner 2.outer.inner.show 內部類用private修飾 無法再main函式中呼叫,怎麼辦呢?在外部類中建立乙個方法...

Java內部類 Java例項內部類

例項內部類是指沒有用 static 修飾的內部類。示例 如下 public class outer 上述示例中的 inner 類就是例項內部類。例項內部類有如下特點。1 在外部類的靜態方法和外部類以外的其他類中,必須通過外部類的例項建立內部類的例項。public class outer inner1...

JAVA學習筆記10 內部類 匿名內部類

內部類 內部類可以直接訪問外部類成員 包括私有成員 外部類要訪問內部類中的成員必須要建立內部類的物件 class outer public void method 內部類一般用於類的設計 分析事物時 發現該事物描述中還有事物 而且這個事物還在訪問被描述事物的內容 這時就可以將還有的事物用內部類來描述...