修饰一个类
-
这个类不能有子类
修饰一个方法
-
这个方法不能被子类覆盖重写
修饰一个局部变量
-
一次赋值,终生不变
修饰一个成员变量
-
必须手动赋值
四种权限修饰符
public | protected | (default) | private | |
---|---|---|---|---|
同一个类(我自己) | √ | √ | √ | √ |
同一个包(邻居) | √ | √ | √ | × |
不同包子类(我儿子) | √ | √ | × | × |
不同包非子类(陌生人) | √ | × | × | × |
定义类时权限修饰符规则
-
外部类:public、(default)
-
成员内部类:public、protected、(default)、private
-
局部内部类:什么都不能写
成员内部类
定义成员内部类
修饰符 class 外部类名称 {
修饰符 class 内部类名称 {
...
}
...
}
-
注意:内用外随意访问,外用内,需要内部类对象。
使用成员内部类
-
-
直接方式:公式:
外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();
内部类同名变量的访问
-
在内部类访问外部类的同名变量
外部类.this.变量名
局部内部类
修饰符 class 外部类名称 {
修饰符 返回值类型 外部类方法名(参数列表) {
class 局部内部类名称 {
...
}
}
}
-
局部内部类如果希望访问所在方法的局部变量,那么这个局部变量必须是final的
匿名内部类
接口名称 对象名 = new 接口名称() {
//重写所有抽象方法
};