您好,登錄后才能下訂單哦!
這篇“Java語言中的內部類有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java語言中的內部類有哪些”文章吧。
內部類: 一個類定義在 另一個類 的 內部。
內部類分為四種:實例內部類、靜態內部類、局部內部類、匿名內部類。
使用時機:當一個事物的內部,還需要一個完整的結構進行描述時,而這個內部的完整結構又只為外部事物提供服務,這個完整結構最好使用內部類。(通常 數據結構 時會使用)
內部類代碼實例:
public class Person{ class Student{ } } //Person是外部類 //Student是內部類
注: 1、定義在class類名外{}花括號外部的其他類,即使是一個文件夾,都不能稱為內部類。
2、內部類和外部類共用一個Java源文件,但是經過編譯之后,內部類會形成單獨的字節碼文件。
代碼實例:
public class Person { public int data1=10; public int data2=20; //實例內部類 class InnerClass{ public int data1 = 40; //public static int data4=60; 無法定義靜態成員變量 public static finally int data4=60 //finally修飾,為常量 public void textInner(){ System.out.println("textInner"); System.out.println(this.data1); //輸出為40; System.out.println(Person.this.data1); //輸出為10; } } public static void main(String[] args) { //實例化內部類 Person kk = new Person(); Person.InnerClass fw = new Person().new InnerClass(); fw.textInner(); //輸出結果為:textInner //實例化內部類 Person.InnerClass fw1 =new Person().new InnerClass(); fw1.textInner(); //輸出結果為:textInner } }
解析:
1.定義在類當中,且不被static修飾的內部類。
2.因為static不依賴于對象,所以無法定義靜態成員變量
3.當需要實例化實例內部類時,語法格式為:
1. 外部類名.內部類名 變量名=new 外部類名().new 內部類();
2. 外部類名 變量名1=new 外部類名();
外部類名.內部類名 變量名2=變量名1.new 內部類名();
4.當內部類的變量名和外部類的變量名相同時,優先訪問自己的,而想調用外部類的成員,調用方法:外部類名.this.同名成員。
5.外部類的任何成員都可以在實例內部類方法中直接訪問。
public class Person2 { public int data=10; private int data2=20; //靜態內部類 static class InnerClass{ public int data = 40; //public static int data3=60; 無法定義靜態成員變量 public void textInner(){ System.out.println("textInner"); System.out.println(data); //輸出內部類的40 Person2 kk=new Person2(); System.out.println(kk.data); //輸出外部類的10; } } public static void main(String[] args) { //實例化靜態內部類 Person2.InnerClass fw1 =new Person2.InnerClass() ; fw1.textInner(); //輸出結果為:textInner } }
解析 :
定義在類當中,被static修飾的內部類
當需要實例化靜態內部類時,語法格式為 :外部類名.內部類名 變量名=new 外部類名.內部類();
訪問外部變量時,必須先實例化外部變量的對象,再進行調用。
public class Person3 { public int data=10; private int data2=20; public void textInner(){ //定義局部內部類 class InnerClass{ int data3=20; public void methodInner(){ System.out.println(data3); } } //實例化局部內部類 InnerClass fw=new.InnerClass(); fw. methodInner(); } public static void main(String[] args) { //方法體 } }
解析:
1.在方法當中定義的內部類。
2.只能在該方法體內部使用,其他位置都不能使用。
3.也不能被訪問修飾符public、private等修飾
interface Shape{ void draw(); } public class Text3 { public static void main(String[] args) { int area=20; new Shape(){ //需要重寫內部方法 public void draw() { // area=50; 無法修改,一旦修改無法訪問了。 System.out.println("正方形面積:"+area); } }.draw(); //調用draw(); } }
解析:
1.匿名內部類與接口有關,匿名一詞便可以知道不需要變量名。
2.語法格式: new 接口名() {//重寫的方法
}.需要調用的方法;
3.匿名內部類里使用到外部變量時,不可以在匿名內部類里修改變量值,會停止訪問。
以上就是關于“Java語言中的內部類有哪些”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。