Java 内部类

1、成员内部类

在一个类中使用内部类,可以在内部类中直接存取其所在类的私有成员变量。

成员内部类的语法:

public class OuterClass{//外部类
	private class InnerClass{//内部类
	//……	
	}		
}
在内部类中可以随意使用外部类的成员方法及成员变量,尽管这些类成员被修饰为private。

内部类的实例一定要绑定在外部类的实例上,如果从外部类中初始化一个内部类对象,那么内部类对象就会绑定在外部类对象上。内部类初始化方式与其他类初始化方式相同,都是用new关键字。

package javademo;

public class OuterClass {
	innerClass in = new innerClass();//在外部类实例化内部类对象的引用
	public void outf(){
		in.inf();//在外部类方法中调用内部类方法·
	}
	class innerClass{
		innerClass(){//内部类构造方法
			
		}
		public void inf(){//内部类成员方法
			
		}
		int y = 0;//定义内部类成员变量
	}
	public innerClass doit(){//外部类方法,返回值为内部类引用
		//y = 4;//外部类不可以直接访问内部类成员变量
		in.y  = 4;
		return new innerClass();//返回内部类引用
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		OuterClass out = new OuterClass();
		OuterClass.innerClass in = out.doit();//内部类的对象实例化操作必须在外部类或外部类的非静态方法中实现
		OuterClass.innerClass in2 = out.new innerClass();

	}

}

2、实例内部类
实例内部类是成员内部类的一种,没有static修饰,实例内部类具有以下特点:
a、在创建实例内部类的实例时,外部类的实例必须已经存在。
b、实例内部类的实例自动持有外部类的实例引用,这个引用形式是:外部类名字.this。在内部类中,可以直接访问外部类的所有成员,包括成员变量和成员方法。
c、外部类实例与内部类实例之间是一对多的关系,一个内部类实例只会引用一个外部类实例,而一个外部类实例对应零个或多个内部类实例。在外部类中不能直接访问内部类的成员,必须通过内部类的实例去访问。
d、在实例内部类中不能定义静态成员,而只能定义实例成员。
e、如果实例内部类与外部类包含同名的成员,this.a 表示内部类的成员变量a,Outer.this.a 表示外部类成员a。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值