访问权限
访问权限修饰符 | 同一个类内 | 同一个包内 | 子类内 | 任何地方 |
---|---|---|---|---|
private | √ | |||
default | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
基类成员访问控制 | 继承访问控制 | 在派生类中的访问控制 |
---|---|---|
public | public | public |
protected | public | protected |
private | public | 不可访问 |
public | protected | protected |
protected | protected | protected |
private | protected | 不可访问 |
public | private | private |
protected | private | private |
private | private | 不可访问 |
内部类种类
内部类可以分为四种:成员内部类、局部内部类、匿名内部类、静态内部类。
访问内外类成员
- 成员内部类可以无条件外部类的成员(属性和方法),无论外部类成员访问权限。但外部类无法访问内部类的成员。
- 局部内部类和匿名内部类都只能访问局部 final 变量(且无法修改)
- 不能从静态内部类对象中访问非静态外部类对象,也不能访问外部类非static属性或方法
访问权限及static类型设置
- 成员内部类不能有任何static属性或方法,但可以定义final属性或方法
- 非内部类不能声明为 private 或 protected 访问权限
- 成员内部类可以用访问权限修饰符或static修饰符,但局部内部类和匿名内部类都不能用
实例化
-
内部类实例化分为非静态内部类实例化和静态内部类实例化
具体可看《Java非静态与静态内部类的实例化》
https://blog.csdn.net/weixin_42077074/article/details/109260200