成员内部类Inner Classes

成员内部类寄生在外部类中,因此可以访问外部类的所有成员和方法而不受修饰符限制。因为内部类是通过实例引用来和外部类建立关系的,成员内部类的成员和方法不能用static修饰

内部类可以用private修饰,而外部类是不能使用private修饰的。如果内部类仅仅在类内部使用时,使用private修饰后,就可以更好的隐藏内部信息

public class Outer{
	private int num;
	private Inner inner = null;

	Outer(int num){
		this.num = num;
		inner = new Inner(); //外部类访问内部类的成员必须先创建一个内部类实例
	}

	public Inner getInnerInstance(){
		if(inner == null) inner = new Inner();
		return inner;
	}

	public void printer(){
		System.out.println("Outer:"+num);
		System.out.println("Inner:"+inner.num);
	}

	public class Inner{
		private int num;	
		Inner(){
			num = Outer.this.num; //访问外部类的同名变量
		}
	}
}

成员内部类是依附外部类而存在的,因此如果要创建成员内部类的对象,前提是必须存在一个外部类的对象。

public class Test {
    public static void main(String[] args)  {
        Outer outer = new Outer();
        
		//第一种方式:
        Outer.Inner inner = outer.new Inner();  //必须通过Outer对象来创建
         
        //第二种方式(推荐使用):
        Outer.Inner inner = outer.getInnerInstance();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值