以安全性著称的JAVA语言是多种机制来追求高度的安全性,常见的变量,属性,方法,都有着各自的访问权限,提供这些访问权限的,就是一下四个关键词:private default ,public , protected.
访问权限:
-
关键字,修饰成员,用于决定这些成员可以在什么位置被访问
-
访问权限 四种
- private 只能在本类中访问
- default 可以在本类中访问、本包中的其它类访问
- protected 可以在本类中访问、本包中的其它类访问、可以 在其它包中的子类访问
- public 可以在任意的包任意的类中访问
private
代码示例:
public class test1 {
public static void main(String[] args) {
HaiZei h = new HaiZei();
}
}
class HaiZei{
private String boat;
private int friendsNum;
String weapon;
}
我们这里创建好了一个类,然后在主类中创建好了一个对象,那么这个对象能够访问谁呢。
我们可以从图中看到,只能访问到没有被private修饰的weapon。
default
我们可以发现在上段代码中那个weapon前面并没有写修饰符,那么系统怎么判定它的访问权限呢。其实那里前面并非什么都没有加,而是系统为了让开发者便于编写代码,不用每个变量都需要前面都加上修饰符,就把最常见的权限设置成了默认。顾名思义,这个访问权限修饰符就是默认的修饰符,就是我们这里要说的default。
但是这里我们还是要注意一点,系统在这个方面是很有脾气的,给了变量默认的权限,让你方便了,就不能让你再自己麻烦,所以,如果你想自己写上default,编译器会报错提示。
错误原因为:Syntax error on token(s), misplaced construct(s):令牌语法错误,结构错位
protected
因为这里需要有包的概念,所以需要截一些图了。博主这里用的是eclipse.
包的结构如左图。
public class test1 {
private String boat;
private int friendsNum;
String weapon;
String shipMaster;
protected void method() {
}
}
我们这里在test1中定义了一个用protected修饰的方法。然后我们去Student里试着调用。
可见,并没有报错。
public
就是权限最大啦,只要是在一个项目里,都可以被访问到。