/**
* 测试非静态内部类
* 调用非静态内部类的方法时,要通过内部类实例来调用,非静态内部类实例必须寄生在外部类实例中
* 由非静态内部类 在同包其他类中创建对象的代码可以看出,内部类对象必须依附于外部类对象
* 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
* 测试非静态内部类
* 调用非静态内部类的方法时,要通过内部类实例来调用,非静态内部类实例必须寄生在外部类实例中
* 由非静态内部类 在同包其他类中创建对象的代码可以看出,内部类对象必须依附于外部类对象
* 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