访问权限控制

访问权限控制一般涉及三个比较重要的修饰符,

public && private && protected

每个修饰符代表了不同的权限

其中public 代表了 公有的,可以被外面的类所访问的。此外了,public 可以修饰类,而private 和 protected 只能用来修饰数据成员的

protected 可以通过继承的方式进行访问。

private 只能被类的成员的访问,而不能被外面的类所访问。

1
2
3
protected int i = 1;
public int j = 0;
private int z = -1;

以上三种就是类似的实现。

值得一提的是java还有一个默认权限。这个权限就是包内的其他类可以使用。不用修饰符就是默认的权限。

权限由大到小排序:public > protected > 默认权限 > private;

目的:最大程度实现封装

getter && setter

如果类中的成员 只供类中的成员使用,那就可能地使用private 这是不错的。

对于使用了private 修饰符的成员,对于每一个成员都可以通过getter 方法获取数据,setter方法设置数据,实现数据存储和数据分离的操作。(但是,我有一点不明白,其他方式也可以实现类似的效果啊)

1
2
3
4
5
6
7
8
9
10
11
12
13
class Cat{
private int age ;
Cat(int a){ // 构造方法
age = a;
}

int getAge(){
return age;
}
int setAge(int a){
age = a
}
}

不可变对象和类

如果 上述的例子失去了setAge 方法,那么他就是一个不可变的类。

一般而言,私有变量如果没有设置方法便是不可变的类.

如果更严谨则需要确定此类的所有成员都是私有的,算了我不太懂,这点不重要,以后再说

作用域

类成员的作用域是整个类,所以成员之间的顺序是任意的

局部变量的作用域就是从其声明开始 到其所在的块尾