非静态内部类知识点

来源:互联网 发布:sql server 2005安装 编辑:程序博客网 时间:2024/05/20 01:35
/**
 * 测试非静态内部类
 * 调用非静态内部类的方法时,要通过内部类实例来调用,非静态内部类实例必须寄生在外部类实例中
 * 由非静态内部类   在同包其他类中创建对象的代码可以看出,内部类对象必须依附于外部类对象
 * OutCow.InnCowLeg cowleg=cow.new InnCowLeg();
 *
 */
public class TestInnClass01 {


public static void main(String[] args) {
OutCow cow=new OutCow(400);
cow.test();
OutCow.InnCowLeg cowleg=cow.new InnCowLeg();
cowleg.info();
}


}
class OutCow{
private int weight;
public OutCow(){ }
public  OutCow(int weight){
this.weight=weight;
}

/**
* 1、定义一个非静态的内部类,非静态内部类不可以有静态方法和属性
* 2、内部类可以直接访问外部类的方法和变量
* 3、外部类不可以直接访问内部类的成员变量,非静态内部类的成员只在非静态内部类范围内是可知的,
*    不能被外部类直接使用
*/
class InnCowLeg{
private String color;
private double length;
public InnCowLeg(){}
public InnCowLeg(String color,double length){
this.color=color;
this.length=length;
}
public void info(){
System.out.println("当前牛腿颜色:"+color+", 高 "+length);
System.out.println("本牛腿所在牛的重量:"+weight);//内部类可以直接访问外部类私有数据
}
}
public void test(){
InnCowLeg cowleg=new InnCowLeg("黑白相间",1.02);
cowleg.info();
//color="棕色";//error :外部类不能直接访问内部类成员变量
cowleg.color="棕色";//Ok!
cowleg.info();
}
}
/*
在java中运行的结果是:
当前牛腿颜色:黑白相间, 高 1.02
本牛腿所在牛的重量:400
当前牛腿颜色:棕色, 高 1.02

本牛腿所在牛的重量:400

当前牛腿颜色:null, 高 0.0
本牛腿所在牛的重量:400

*/
0 0
原创粉丝点击