java的访问控制符
Java提供了三个访问控制符(还有一个是默认不加控制符的控制级别)
由小到大依次排列为:
private –> default(就是那个默认没有的) –> protected –> public
- private:类成员用private修饰,只能在类的内部被访问
- default:默认访问控制,可以被相同包下的其他类访问
- protected:用protected访问控制符修饰,即可以被同一个包中的其他类访问,也可以被不同包中的子类访问(用该修饰符修饰,一般是希望其子类重写这个方法)
- public:用public修饰的类成员,可以被所有的类访问,不管是否在一个包中,是否有父子继承关系。
问:访问控制符是干嘛的?
答:访问控制符用于控制一个类成员是否可以被其他类访问。
问:局部变量可以用访问控制符来访问吗?
答:不能,因为局部变量的作用域是其所在的方法,不能被其他类访问,因此不能使用访问控制符来修饰。
{
//测试在代码块中,用修饰符修饰局部变量
//public int o = 0;
//Illegal modifier for the variable o; only final is permitted
//修饰变量o的修饰符是非法的,只有final修饰符才是被允许修饰的
//用final试了一下,没报错
final int i = 10;
//但是 这有个问题:如下:
int t = 21;
//这里没有修饰符修饰,那就是默认的default修饰的?
//还是因为它是局部变量,只在这个代码块中出现,所以根本没有修饰符这么一说?
}
问:顶级类可以被修饰吗?可以被哪几种修饰
答:顶级类只有两种访问控制级别:public和默认,不能使用private和protected,因为顶级类既不处于任何类的内部,也没有其他外部类的子类,因此没有意义。public修饰的顶级类可以被所有类使用,默认修饰符修饰的的顶级类只能被同一个包中的所有类访问。
- 类中的绝大部分属性应该使用private修饰,static修饰的以及一些类似全局变量的属性,可以考虑使用public修饰
- 辅助实现该类中的其他方法的工具类,应用private修饰
- 一个类用作其他类的父类,类中的方法仅希望被子类重写,而不想被外界直接调用,则应使用protected修饰
- 希望给其他类自由使用的方法,应该使用public修饰