62,614
社区成员
发帖
与我相关
我的任务
分享
package innerclass;
public class Parcel2{
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 Destination to(String s){
return new Destination(s);
}
public Contents contents() {
return new Contents();
}
public void ship (String dest){
Contents c = contents();
Destination d = to(dest);
System.out.println(d.readLabel());
}
public static void main(String[] args) {
Parcel2 p = new Parcel2();
p.ship("Tasmania");
Parcel2 q = new Parcel2();
Contents c = q.contents(); //静态方法中调用内部类,应该由外部列对象调用才行
Destination d = q.to("Borneo"); //如:Parcel2.Destination d = q.to("Borneo");
System.out.println(d.readLabel()); //但此类中没有用外部类对象,竟然没有报错,求解释?
}
}
public void writeStr() {
System.out.println("no-static && no inner class");
}
public class Parcel2{
String name; //追加一个外部类属性
public Parcel2(String name) {this.name=name;} //追加一个外部类构造函数
class Contents {
private int i = 11;
public int value() {return i;}
public String getOuterName() {return Parcel2.name;} //追加一个查看外部类的方法
}
class Destination {
private String label;
Destination(String whereTo){
label = whereTo;
}
String readLabel() {return label;}
}
public Destination to(String s){
return new Destination(s);
}
public Contents contents() {
return new Contents();
}
public void ship (String dest){
Contents c = contents();
Destination d = to(dest);
System.out.println(d.readLabel());
}
public static void main(String[] args) {
//Parcel2 p = new Parcel2();
//p.ship("Tasmania");
Parcel2 q = new Parcel2("I am q"); //生成外部类实例
Contents c = q.contents();
System.out.println(c.getOuterName()); //看看c的外部类实例是什么?
Destination d = q.to("Borneo");
System.out.println(d.readLabel());
}
}