Java基礎:內部類基礎
阿新 • • 發佈:2018-12-26
首先是內部類的定義:
可以將一個類的定義放在另一個類的內部,這就是內部類。
public class Parcel1{ class Contents { private int i=11; public int value(){ return i; }} class Destination{ private String label; Destination(String whereTo){ label=whereTo; } String readLabel(){ return label; } } public void ship(String dest) { Contents c=new Contents(); Destination d=new Destination(dest); System.out.println(d.readLable()); } public static void main(String[] args) { Parcel1 p=new Parcel1(); p.ship("Tasmania"); } }
上面就是一個很簡單的內部類的例子。
1.首先讓我們來看看Parcel1這個類的構成
包含兩個內部類:
Destination,Contents
一個返回值為void的ship方法
2.分析ship方法
public void ship(String dest)
{
Contents c=new Contents();
Destination d=new Destination(dest);
System.out.println(d.readLabel());
}
在這個方法中,分別建立了兩個內部類的例項。同時呼叫了Destination這個內部類的readLabel方法。
3.主函式
public static void main(String[] args) { Parcel1 p=new Parcel1(); p.ship("Tasmania"); }
當我們在ship()方法中使用內部類的時候,與使用普通的內部類並沒有什麼區別。
外部類同時也提供了一個方法,該方法可以返回一個指向內部類的引用
public class Parcel { class Contents{ private int i=11; public int value() { return i; } } class Destination{ private String label; public Destination(String whereTo) { whereTo = label; } String readLabel(){ return label; } } public Destination destination(String s) { return new Destination(s); } public Contents contents() { return new Contents(); } public void ship(String dest) { Contents contents=contents(); Destination destination=destination(dest); System.out.println(destination.readLabel()); } public static void main(String[] args) { Parcel parcel=new Parcel(); parcel.ship("Tasmania"); Parcel.Contents c= parcel.contents(); Parcel.Destination destination=parcel.destination("Borneo"); } }
Parcel類中新提供了兩個返回內部類引用的方法:Contents contents()和Destination destination()
同時在主函式中向我們展示瞭如何建立內部類,格式為 OuterClassName.InnerClassName