静态内部类的细节

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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值