我的Java筆記 內部類

2021-08-09 21:19:38 字數 2219 閱讀 5567

1.定義:在乙個類中定義另乙個類,那麼則為內部類

2.內部類可以訪問外部類的成員,

包括私有

外部類想要訪問內部類的成員,必須通過建立內部類的物件訪問該內部類的成員

3.內部類的分類:

(1)成員內部類:在外部類的成員位置

(2)區域性內部類:在外部類的區域性位置定義的這個類

4.在測試類中訪問成員內部類中成員方法的方式:

(1)訪問成員內部類中的非靜態方法:

外部類名.內部類名 物件名 = new 外部類名().new 內部類名();

(2)訪問靜態成員內部類中的方法:

外部類名.內部類名 物件名 = new 外部類名.內部類名();

(3)訪問靜態成員內部類中的靜態方法:

外部類名.內部類名.方法名();

5.訪問區域性內部類的成員方法:

建立該區域性內部類的物件,在測試類中建立外部類物件,呼叫方法訪問 例:

//訪問區域性內部類成員方法例子

//外部類

class outer

} //訪問區域性內部類中的方法

inner i = new inner() ;

i.show() ; }}

//測試類

public class innerdemo

}

6.成員變數修飾符:

(1)private:為了保證資料的安全性(內部類在用private修飾後外部無法訪問)

(2)static:為了方便呼叫

注:若成員內部類被 「static」 關鍵字修飾時,若要訪問外部類的成員變數,則外部類的成員變數也應用 「static」 修飾

7.區域性內部類:

問題:區域性內部類訪問區域性變數出現問題。

區域性變數必須用 「final」 關鍵字修飾

由於區域性變數是隨著方法呼叫而生成的,隨著方法的呼叫完畢消失,而現在區域性位置有乙個區域性內部類它要在自己的成員方法位置訪問當前的區域性變數,必須把變數變成乙個常量(需要用final:自定義常量),這樣的乙個變數的值永遠是固定的

1.含義:內部類的簡化格式

2.前提:必須存在乙個介面或者乙個類(具體或抽象均可)

3.格式:

new 介面名 / 類名(){

方法重寫; }

4.當在介面中存在多個方法時:

介面名  物件名 = new  介面名(){

方法重寫;};

物件名.方法名();訪問

例1:

//介面

inte***ce inter

class outer

@override

public void show2()

};i.show1();

i.show2(); }}

public class test

}

5.匿名內部類的實質:

繼承了該類(抽象類)或者是實現了該介面的子類物件

例2:使用匿名內部類

//介面(使用匿名內部類的前提)

inte***ce inter

class studentdemo

}//測試類

public class test

}) ; //分號必不可少

}}

/*

例1:看程式,填空分別輸出:30,20,10

*/class outer }}

public class test

}//結果:num依次為10,20,30

/*

例2(匿名內部類):按照要求補全**

inte***ce inter

class outer

class outerdemo

}要求在控制台輸出」helloworld」

*/inte***ce inter

class outer

}; //分號必不可少 }}

public class outerdemo

}

2017.10.22

我的內部類筆記

一 認識一般類的類,方法,變數之間的訪問 1 靜態的成員或方法直接用類名訪問,非靜態的要通過類的物件訪問 2 靜態方法不能訪問非靜態成員,不能呼叫非靜態方法 3 非靜態方法可以訪問靜態成員,可以呼叫靜態方法 4 成員變數在類體中都是可見的 建立在 1 2 的基礎上 但private的成員變數只在該類...

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...