Java内部类详解

概念:一个类的内部又完整的嵌套了另一个类,被嵌套的类成为内部类。

基本语法:

class Outer{

        class Inner{

        }

}

内部类的分类:

定义在外部类局部位置上:

1)局部内部类(有类名,定义在方法或代码块中)Java编程基础/day04/innerclass/LocalInnerClass

a)可以直接访问外部类的所有成员,包含私有

b)不能添加访问修饰符,因为它的地位就是一个局部变量。但是可以使用final关键字修饰

c)作用域:仅仅在定义它的方法或代码块中

d)局部内部类可以直接访问外部类的成员

e)外部类在方法或代码块中创建局部内部类对象

举例:

f)外部其他类不能访问

g)如果外部类和局部内部类的成员重名时,默认采取就近原则,如果想访问外部类的成员,可以使用外部类名.this.成员名

举例: 

结果为:

2)匿名内部类(没有类名)Java编程基础/day04/innerclass/AnonymousInnerClass

基本语法:

New 类或接口(参数列表){

类体

};

当基于类创建匿名内部类时参数列表会自动赋值给对应的构造器

举例: 

结果为:

细节:

如果外部类和匿名内部类的成员重名时,默认采取就近原则,如果想访问外部类的成员,可以使用外部类名.this.成员名

定义在外部类的成员位置上:

1)成员内部类(Java编程基础/day04/innerclass/MemberInnerClass)

细节:

1)可以直接访问外部类的所有成员和方法,包括私有的

2)可以添加任意访问修饰符

3)作用域:整个类体

4)外部类访问内部类,先创建内部类对象,再访问

5)外部其他类访问内部类:

a)外部类类名.内部类类名 引用 = 外部类对象引用.new 内部类();

举例:

b)在外部类中,定义一个方法,该方法可以返回内部类的对象

6)如果外部类和成员内部类的成员重名时,默认采取就近原则,如果想访问外部类的成员,可以使用外部类名.this.成员名

2)静态内部类(Java编程基础/day04/innerclass/StaticInnerClass)

细节:

1)可以访问外部类的所有静态成员,但是直接访问非静态成员

2)可以添加任意访问修饰符

3)作用域:整个类体

4)外部类访问内部类,先创建内部类对象,再访问

5)外部其他类访问内部类:

a)外部类类名.内部类类名 引用 = new 外部类类名.内部类();

举例: 

b)在外部类中,定义一个方法,该方法可以返回内部类的对象

6)如果外部类和成员内部类的成员重名时,默认采取就近原则,如果想访问外部类的成员,可以使用外部类名.成员名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值