首先是内部类的定义:
可以将一个类的定义放在另一个类的内部,这就是内部类。
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