您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Java中如何使用內部類,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
很多時候我們創建類的對象的時候并不需要使用很多次,每次只使用一次,這個時候我們就可以使用內部類了
內部類就是在一個類的內部在定義一個類,比如,A類中定義一個B類,那么B類相對A類來說就稱為內部類,而A類相對B類來說就是外部類了。
內部類不是在一個java源文件中編寫倆個平行的倆個類,而是在一個類的內部再定義另外一個類。 我可以把外邊的類稱為外部類,在其內部編寫的類稱為內部類。
內部類分為四種:
成員內部類
靜態內部類
局部內部類
匿名內部類
注:成員內部類中不能寫靜態屬性和方法
//在A類中申明了一個B類,此B類就在A的內部,并且在成員變量的位置上,所以就稱為成員內部類 public class Outer { private int id; class Inner { public void in() { System.out.println("這是內部類方法"); } } public void out() { System.out.println("這是外部類方法"); } }
實例化內部類,首先需要實例化外部類,通過外部類去調用內部類
// 代碼接上 class Test { public static void main(String[] args) { //實例化成員內部類分兩步 //1、實例化外部類 Outer outObject = new Outer(); //2、通過外部類調用內部類 Outer.Inner inObject = outObject.new Inner(); //測試,調用內部類中的方法 inObject.in();//打印:這是內部類方法 } }
分析:
想想如果你要使用一個類中方法或者屬性,你就必須要先有該類的一個對象,同理,一個類在另一個類的內部,那么想要使用這個內部類,就必須先要有外部類的一個實例對象,然后在通過該對象去使用內部類。
訪問外部類的所有屬性(這里的屬性包括私有的成員變量,方法)
//在A類中申明了一個B類,此B類就在A的內部,并且在成員變量的位置上,所以就稱為成員內部類 public class Outer { private String id = "11923020124"; class Inner { public void in() { System.out.println("這是內部類方法"); } //內部類訪問外部類私有的成員變量 public void getId() { System.out.println("id: " + id); } public void useOut() { out(); } } public void out() { System.out.println("這是外部類方法"); } } class Test { public static void main(String[] args) { //實例化成員內部類分兩步 //1、實例化外部類 Outer outObject = new Outer(); //2、通過外部類調用內部類 Outer.Inner inObject = outObject.new Inner(); //測試,調用內部類中的方法 inObject.in();//打印:這是內部類方法 inObject.getId(); inObject.useOut(); } }
如果內部類中的變量名和外部類的成員變量名一樣,要通過創建外部類對象 "."屬性來訪問外部類屬性,通過this.屬性訪問內部類成員屬性
//在A類中申明了一個B類,此B類就在A的內部,并且在成員變量的位置上,所以就稱為成員內部類 public class Outer { private String id = "Outer Id"; class Inner { private String id = "Inner Id"; //這個id跟外部類的屬性id名稱一樣。 public void getInnerId() { System.out.println(id);//輸出Inner Id,內部類中的變量會暫時將外部類的成員變量給隱藏 } public void getOuterId() { System.out.println(Outer.this.id);//輸出Outer Id,內部類中的變量會暫時將外部類的成員變量給隱藏 } } public void out() { System.out.println("這是外部類方法"); } } class Test { public static void main(String[] args) { //實例化成員內部類分兩步 //1、實例化外部類 Outer outObject = new Outer(); //2、通過外部類調用內部類 Outer.Inner inObject = outObject.new Inner(); //測試,調用內部類中的方法 inObject.getInnerId(); inObject.getOuterId(); } }
說明:
如何調用外部類的成員變量呢?通過Outer.this,因為如果想實例化內部類對象,就必須通過外部類對象,當外部類對象new出內部類對象時,會把自己(外部類對象)的引用傳到了內部類中,所以內部類就可以通過Outer.this來訪問外部類的屬性和方法,到這里,你也就可以知道為什么內部類可以訪問外部類 的屬性和方法,這里由于有兩個相同的屬性名稱,所以需要顯示的用Outer.this來調用外部類的屬性,平常如果屬性名 不重復,那么我們在內部類中調用外部類的屬性和方法時,前面就隱式的調用了Outer.this。
要想訪問內部類中的內容,必須通過外部類對象來實例化內部類。
能夠訪問外部類所有的屬性和方法,原理就是在通過外部類對象實例化內部類對象時,外部類對象把自己的引用傳進了內部類,使內部類可以用通過Outer.this去調用外部類的屬性和方法,一般都是隱式調用了,但是當內部類中有屬性或者方法名和外部類中的屬性或方法名相同的時候,就需要通過顯式調用Outer.this了。
上述就是小編為大家分享的Java中如何使用內部類了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。