【无标题】

java面向对象中内部类详解

一、分类:局部内部类、匿名内部类、成员内部类、静态内部类

二、局部内部类

  1. 局部内部类(有类名)定义在外部类的局部位置,通常在方法

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

  3. 不能添加访问修饰符,但是可以使用 final 修饰

  4. 可以直接访问外部类的所有成员、方法,包含私有的

  5. 如果外部类和局部内部类的成员、方法重名时,默认遵循就近原则

  6. 如果外部类和局部内部类的成员、方法重名时,想访问外部类的成员、方法,使用 外部类名.this.成员)去访问

  7. 外部类访问局部内部类的成员、方法 ,可以先创建内部类对象,再访问(注意:必须在作用域中)

  8. 外部其他类—不能访问----局部内部类(因为局部内部类地位是一个局部变量)。

三、匿名内部类

  1. 匿名内部类(通过new 类或者接口)是定义在外部类的局部位置,通常在方法

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

  3. 不能添加访问修饰符

  4. 可以直接访问外部类的所有成员、方法,包含私有的

  5. 如果外部类和局部内部类的成员、方法重名时,默认遵循就近原则

  6. 如果外部类和局部内部类的成员、方法重名时,想访问外部类的成员、方法,(使用外部类名.this.成员)去访问

  7. 外部类在方法中,可以创建 Inner02 对象,然后直接调用成员、方法即可(对象实例.内部类成员 对象实例.内部类方法)

  8. 外部其他类—不能访问----匿名内部类(因为局部内部类地位是一个局部变量)

除了第三点,其他几点与局部内部类类似。

四、成员内部类

成员内部类是定义在外部类的成员变量的位置上,并且没有static修饰

  1. 可以直接访问外部类的所有成员,包含私有的
  2. 可以添加任意访问修饰符(public,protected,默认,private),因为它的地位就是一个成员
  3. 作用域:与外部类的其他成员一样为整个类体
  4. 成员内部类 --访问—>外部类成员、方法; 访问方式:直接访问
  5. 外部类 --访问—>成员内部类成员、方法; 访问方式:创建对象,再访问 (成员内部类名 xx = new 成员内部类名)
  6. 外部其他类–访问—>成员内部类;访问方式:创建对象,再访问(外部类名.成员内部类名 xx = 外部类名.new 成员内部类名)
  7. 如果外部类与成员内部类成员重名时,内部访问的话,默认遵守就近原则;如果想访问外部类的成员时,则可以使用(外部类名.this.成员)去访问
五、静态内部类

静态内部类是定义在外部类的成员位置,并且有static修饰

  1. 可以直接访问外部类的所有静态成员,包含私有的,但不能直接访问非静态成员
  2. 可以添加任意访问修饰符(public,protected,默认,private)因为它的地位就是一个成员
  3. 作用域:同其他的成员一样,都是整个类
  4. 静态内部类–访问---->外部类(比如:静态属性);访问方式:直接访问所有静态成员
  5. 外部类–访问---->静态内部类;访问方式:创建对象,再访问
  6. 外部其他类—访问—>静态内部类
  7. 如果外部类与静态内部类的成员重名时,静态内部类访问的时,默认就近原则; 如果想访问外部类的成员,则可以使用(外部类名.成员)去访问。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值