Java 4种权限和2种变量修饰符在内部类上的使用

总结

  1. public、default(包访问权限)、final可以用在外部类上
  2. public、default(包访问权限)、private、protected、static、final可以用在内部类上
  3. 局部内部类上不能有修饰符,或者只能有个final修饰符
  4. 访问权限用在外部类,表示其他类访问外部类的权限,访问权限用在内部类表示就算其他类可以访问到外部类,还是要经过内部类的权限检查才能访问内部类
  5. 内部类访问外部类与权限修饰符无关,只与static关键词有关,当没有static表示不是静态内部类,则可以访问外部类的所有变量,当有static表示是静态内部类,只能访问外部类的static静态变量
  6. 局部内部类由于无法使用static修饰,所以能访问外部类的所有变量
  7. 内部类中定义变量与权限修饰符无关,只与static关键词有关,没有static修饰的内部类无法定义static静态成员变量,只能定义普通成员变量、final常量,有static修饰的内部类,可以定义所有变量包括普通成员变量、final常量、static静态成员变量
  8. 局部内部类由于无法使用static修饰,所以无法定义static静态成员变量,只能定义普通成员变量、final常量
  9. final修饰类表示类无法被继承,修饰方法表示方法无法被重写,修饰变量表示变量值或引用不可更改,值不可更改针对基础类型,引用不可更改针对引用类型,但是对象里面的属性可以更改

类定义

外部类

请添加图片描述

  1. 可以看到外部类无法使用private和protected修饰符,以及无法使用static修饰符
  2. public修饰符表示任何类都可以访问该外部类
  3. defualt(包访问权限)修饰符即什么都不填,表示只有同包的类可以访问到该外部类
  4. final修饰符表示该外部类无法被继承

内部类

请添加图片描述

  1. 可以看到四种访问权限修饰符都可以用在普通内部类上
  2. 在内部类上的权限修饰符表示虽然可以访问到外部类Test,但是如果是default权限那只能在同包的内才能访问到内部类,如果是protected如果外包的类想访问外部类Test的内部类,只能先继承外部类才能访问
  3. static表示该内部类是静态内部类,可以理解为和外部类关系不大,和外部类一起是两个独立的类
  4. final表示该内部类无法被继承

局部内部类

在这里插入图片描述

  1. 局部内部类的定义在方法内部
  2. 局部内部类不能使用任何权限修饰符和static修饰符,只能使用final修饰符表示该局部内部类无法被继承

变量访问

内部类

请添加图片描述
请添加图片描述

在这里插入图片描述

  1. 可以看到类权限修饰符以及final对内部类访问外部类的变量没有任何影响,需要区分的就是普通内部类和静态内部类
  2. 普通内部类可以访问外部类的普通成员变量和静态成员变量
  3. 外部类的final成员变量表示变量无法被更改,更改则报错,外部类的static成员变量的意思是可以在同一个类创建的多个对象中访问到同一个staic成员变量
  4. final常量无法被更改,所以会报错
  5. 由于final并没有static的语义,所以在静态内部类无法访问到

局部内部类

在这里插入图片描述

  1. 在上面局部内部类定义时,只有两种选项,一种是没有任何修饰符,一种是final修饰符,其他都报错,所以这里只贴出两者的变量访问
  2. 可以看出局部内部类可以访问外部类的所有成员变量,包括普通的,静态的和final常量

变量定义

内部类

请添加图片描述

  1. 其实权限修饰符和final对定义类的成员变量没有影响,只要把类分为普通内部类和静态内部类就可以了
  2. 普通内部类不能定义静态变量,而静态内部类可以定义所有变量

局部内部类

在这里插入图片描述

  1. 局部内部类只能定义普通成员变量和final常量
  2. 由于局部内部类不能是静态的,所以不能定义静态变量
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_45754452

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值