內部類使用

2021-09-26 20:24:51 字數 1633 閱讀 2670

內部類可以擁有 private 訪問許可權、protected 訪問許可權、public 訪問許可權及包訪問許可權。比如上面的例子,如果成員內部類 inner 用 private 修飾,則只能在外部類的內部訪問,如果用 public 修飾,則任何地方都能訪問;如果用 protected 修飾,則只能在同乙個包下或者繼承外部類的情況下訪問;如果是預設訪問許可權,則只能在同乙個包下訪問。這一點和外部類有一點不一樣,外部類只能被 public 和包訪問兩種許可權修飾。我個人是這麼理解的,由於成員內部類看起來像是外部類的乙個成員,所以可以像類的成員一樣擁有多種許可權修飾。

//成員內部類的使用

public

class

main

public

voids(

)}public

voids(

)public

voidt(

)public

static

void

main

(string[

] args)

}

總結:(在成員內部類不加修飾符的情況下)成員內部類可以可以訪問外部類的所有屬性和方法(私有,公有,靜態),外部類可以訪問內部類的所有屬性和方法(私有,靜態,公有)。

區域性內部類是定義在乙個方法或者乙個作用域裡面的類,它和成員內部類的區別在於區域性內部類的訪問僅限於方法內或者該作用域內。

public

void

localinner()

}}

總結:區域性內部類就像是方法裡面的乙個區域性變數一樣,是不能有 public、protected、private 以及 static 修飾符的。

private

void

setlistener()

class

listener1

implements

view.onclicklistener

}class

listener2

implements

view.onclicklistener

}

總結:匿名內部類是唯一一種沒有構造器的類的,正因為它沒有構造器,所以使用範圍非常有限,匿名內部類也是不能有訪問許可權修飾符和static修飾符的,匿名內部類用於繼承其他的類或者實現介面的方法,並不需要增加額外的方法,只是對繼承方法的實現與重寫。

//靜態內部類

static

class

staticinnerclass

}//外部類方法訪問靜態類方法和屬性

public

void

stainnerclass()

總結靜態內部類是不需要依賴於外部類的,靜態內部類只能訪問外部類的靜態成員變數和方法,但不能訪問非靜態的,外部類可以訪問靜態內部類的所有東西,這個可以通過建立靜態內部類的物件去實現。

區域性內部類和匿名內部類只能訪問區域性final變數,不能訪問外部類的final變數。

建立靜態內部類物件的一般形式為: 外部類類名.內部類類名 *** = new 外部類類名.內部類類名()

建立成員內部類物件的一般形式為: 外部類類名.內部類類名 *** = 外部類物件名.new 內部類類名()

內部類 匿名內部類的使用

內部類的使用 classouter classinner public voidget a a public voidtest this.get newa public voidfun1 system.out println i public classtest public static void...

使用內部類

如果希望在外部類以外的地方使用內部類 包括靜態和非靜態 則內部類不能使用private訪問控制許可權 private修飾的內部類只能在外部類中使用 其他的內部類訪問控制符 在外部類以外的地方定義靜態內部類 public class outclass class testinclass 在外部類以外的...

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

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