Java——修饰符
目录
权限修饰符
同一个类下
根据上图可以得出,在同一包下,在同一个类中,创建父类对象后,被private,public,protected和默认修饰符修饰的方法都可以被访问到。
有继承关系的类下
根据上图可以得出,在同一包下,在有继承关系的类中,创建子类对象后,被private修饰符修饰的方法不可以被访问到。
无关系的类下
根据上图可以得出,在同一包下,在没有关系的类中,创建父类对象后,被private修饰符修饰的方法不可以被访问到。
不同包下有继承关系的类
根据上图可以得出,在不同包下,在有继承关系的类中,创建子类对象后,被private和默认修饰符修饰的方法不可以被访问到。
Protect补充!!!:
protected修饰的成员可以被子类(这里指不同包的子类,同包的子类都不需要考虑protected)访问指父类的protected成员被子类继承,子类可以直接使用;不是在子类方法中创建父类对象,然后通过父类对象调用protected权限的方法。
不同包无关系的类
根据上图可以得出,在不同包下,在无关系的类中,创建父类对象后,只有被public修饰符修饰的方法可以被访问到。
总结
修饰符 | 同一个包 同一个类 | 同一个包 子类和无关类 | 不同的包 继承关系的类 | 不同的包 无关类 |
private | 可以访问 | 不可访问 | 不可访问 | 不可访问 |
默认 | 可以访问 | 可以访问 | 不可访问 | 不可访问 |
protected | 可以访问 | 可以访问 | 可以访问 | 不可访问 |
public | 可以访问 | 可以访问 | 可以访问 | 可以访问 |
状态修饰符
final(最终态)
final是最终的意思,它可以修饰成员方法,成员变量,类
修饰方法
被final修饰的方法不能被重写
修饰成员变量
被final修饰的变量不能再次被赋值
同理,如果一个类被final修饰也不能被继承
修饰引用类型
这里final修饰的是s,而s是一个地址值,s的地址值不可以改变,但是s的成员变量的值可以改变。
final总结
1、final修饰成员变量表示该变量是常量,不能被再次赋值。
2、final修饰方法表示该方法是最终方法,不能被重写
3、final修饰类表示该类是最终类,不能被继承
4、final修饰引用类型表示该引用类型的地址值不可以发生改变,但是地址里面的内容是可以改变的
static(静态)
static是静态的意思,它可以修饰成员变量和成员方法
上面这个例子中,两个人来自同一所大学。改进如下:
用static关键字修饰了,并且第二个注释掉了也可以。
还可以直接用类名调用。
被更改之后全部被修改。
总结
1、被类的所以对象共享
2、可以通过类名调用
3、静态的成员方法只能访问静态成员