码迷,mamicode.com
首页 > 其他好文 > 详细

静态内部类的细节

时间:2015-02-10 13:28:01      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:静态内部类细节

public class Cow{
private double weight;
//外部类的两个重载的构造器
public Cow(){}
public Cow(double weight){this.weight=weight;}
}
//定义一个非静态的内部类
private classCowLeg{
//非讲台内部类的两个Field
private double length;
private String color;
//非讲台内部类的两个重载的构造器
public CowLeg(){}
public CowLeg(double length,String color){
this.length=length;
this.color=color;
}
//内部类的setter和getter方法...
//非静态内部类的实例方法
public void info(){
System.out.println(length+color);
//直接访问外部类的private修饰的Field方法
System.out.println(weight);
}
}
public void test(){
CowLeg c=new CowLeg(3.3,"白色");
c.info();
}
public static void main(String[] args){
Cow cow=new Cow(32.43);
cow.test();
}


--在非静态内部类里可以直接访问外部类的私有成员
--这是因为在非静态内部类对象里保存了一个它寄存的外部类对象的引用
--当调用实例内部类的实例方法时必须有一个非静态内部类实例
--而非静态内部类实例必须寄存在外部类的实例里
--如果外部类成员变量,内部类成员变量和内部类里的方法的局部变量同名,则可以通过使用this,外部类类名.this作为限定来区分

public class DiscernVariable{
private String prop="外部类的实例变量";
public void info(){
String prop="局部变量";
//通过外部类类名.this.varName访问外部类实例Field
System.out.println("外部类的Field值:"+DiscernVariable.this.prop);
//通过this.varName访问内部类实例的Field
System.out.println("内部类的Field值:"+this.prop);
//直接访问局部变量
System.out.println("局部变量的值"+prop);
}
}
public void test(){
InClass in=new InClass();
in.info();
}
pubic static void main(String[] args){
new DiscrenVarible().test();
}

静态内部类的细节

标签:静态内部类细节

原文地址:http://blog.csdn.net/hephec/article/details/43701023

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!