java内部类详解

java内部类分类:

1、成员内部类
2、局部内部类
3、匿名内部类
4、静态内部类

内部类只是编译时的概念,一旦编译成功,就会变成两个不同的类

一、成员内部类

位置和外部类的成员一样

特点:

1、成员内部类拥有public、private、protected、包访问权限。
2、成员内部类可以访问外部类的所有成员变量和方法(包括私有变量和方法)
3、如果外部类存在和成员内部类重名的成员,可以通过(外部类.this.成员变量,外部类.this.成员方法)访问外部类的成员
4、外部类要想访问成员内部类的成员,必须先创建一个成员内部类的实例,通过这个实例来访问(static final的成员变量,则直接可以通过类.成员变量访问)
5、成员内部类不可以定义静态(static)的成员(可以定义static final的成员变量)
6、要想创建成员内部类对象,必须要有一个外部类对象(例如:Hello hello = new Hello();      Hello.A a = hello.new A();)

二、局部内部类(方法内部类)

局部内部类一般定义在外部类的方法中,其作用域也在这个方法中

特点:

1、局部内部类只用于默认的包访问权限
2、局部内部类就像方法中的局部变量一样,不能拥有static修饰符(可以有static final修饰成员变量)

三、匿名内部类

匿名内部类也是定义在方法中的类,常见的用来创建一个线程

特点:

1、匿名内部类没有权限修饰符和static修饰符
2、匿名内部类是唯一没有构造器的类
3、匿名内部类大部分用于继承其他类或实现接口,并不需要增加额外的方法,只是对继承方法的实现或是重写

四、静态内部类

静态内部类和成员内部类类似,只是加上了static关键字

特地:

1、静态内部类不依赖于外部类,这点和静态成员变量类似
2、静态内部类只能访问外部类的静态成员
3、外部类访问静态内部类要通过静态内部类的对象来访问
4、创建一个静态内部类的对象:Hello.D d = new Hello.D();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值