異常 內部類

2021-10-25 12:15:55 字數 1967 閱讀 1826

將乙個類定義在另乙個給類裡面或者方法裡面,這樣的類就被稱為內部類。

內部類可以分為四種:成員內部類、區域性內部類、匿名內部類、靜態內部類,下面我們逐一介紹這四種內部類。

下面我們先介紹乙個普通的內部類

public

class

innerclasstest

}

我們來說一下內部類的作用以便以後我們什麼時候去用內部類

1.內部類提供了更好的封裝,可以把內部類隱藏在外部類之內,不允許同乙個包中的其他類訪問該類

2.內部類的方法可以直接訪問外部類的所有資料,包括私有的資料

3.內部類所實現的功能使用外部類同樣可以實現,只是有時使用內部類更方便

對於該成員變數,其生命週期和物件的生命週期一致,作用域在整個類中都可以使用,呼叫形式:使用物件呼叫。

成員內部類可以無條件訪問外部類的屬性和方法,但是外部類想要訪問內部類屬性或方法時,必須要建立乙個內部類物件,然後通過該物件訪問內部類的屬性或方法。

public

class

practice

}public

static

void

main

(string[

] args)

}

可用的修飾符:public private protected static final

private int count;

//private修飾後,該類就只能在當前類中使用

//static修飾後,該類的生命週期和外部類的生命週期一致,就失去了內部類本身的意義

//final修飾後,該類無法被繼承

定義在方法中的類,生命週期和方法的生命週期一致,作用域只在方法中。

但是我們的區域性內部類怎麼使用呢?

區域性變數只能在方法中使用

//直白的說區域性內部類就是方法中再建立乙個類以及屬性跟方法

//當我們想在method方法中呼叫內部類中的show方法時,只能在方法中建立乙個inner物件呼叫非靜態類

public

void

method()

} inner inner =

newinner()

;//建立內部類物件

inner.

show()

;//這裡就能在呼叫method方法時也可以使用區域性內部類中的方法了

}

public

static

void

main

(string[

] args)

public

static

void

change()

}}}

概念:本身是沒有名字的類

前提:1.匿名內部類必須繼承乙個抽象類或者實現乙個介面

2.匿名內部類沒有構造方法,因為它沒有類名

語法 : 父類型別 變數名 = new父類型別(){};

是一種多型的向上轉型形式,限制了對子類特有方法的呼叫

只有當所使用的方法都是父類中的方法時才考慮使用匿名內部類,只要其中有乙個特有的方法就需要考慮建立乙個具體的類使用

public

class

niminginnerdemo

@override

public

void

eat()}

; animal.

eat();

animal.

sleep()

;}}inte***ce

animal

class

catimplements

animal

@override

public

void

sleep()

}

內部類 異常 包

1 內部類 內部類訪問規則 1 內部類可以訪問外部類的中的成員,包括私有。外部類不可以私有 之所以能訪問外部類是因為內部類中有外部類的引用,格式是 外部類名.this.2 外部類要訪問內部類,需要建立內部類的物件。如果在主函式中直接訪問內部類,需要把返回值型別寫成 外部類.內部類 變數名 new 外...

內部類 成員內部類 區域性內部類 匿名內部類

public class 外部類 private int num 0 外部類如果要訪問內部類的成員,則需要通過內部類的物件訪問 使用方式 1.外部類使用內部類,主函式再使用外部類 2.通過new的方式 外部類.內部類 物件名 new 外部類 new 內部類 定義在方法內部的類,就是區域性內部類,只有...

內部類(成員內部類 靜態內部類 方法內部類)

一 成員內部類 最常見的內部類就是成員內部類,也稱作普通內部類 2 inner類中定義的test 方法可以訪問outer類中的資料,不受訪問控制符的影響。3 定義了成員內部類後,必須使用外部類物件來建立內部類物件,而不能直接去 new 乙個內部類物件,即 內部類 物件名 外部類物件.new 內部類 ...