面向对象——访问修饰符及封装
访问修饰符
访问修饰符限制了类之间的访问关系,包也是一种访问控制机制,通过这种机制,增加了代码的安全性。
类的访问修饰符:
类的访问修饰符一般用两种,public和默认修饰符
| 修饰符\作用域 | 同一包中 | 非同一包中 |
| public | 可以使用 | 可以使用 |
| 默认修饰符 | 可以使用 | 不可以使用 |
类成员的访问修饰符:
public访问修饰符作用域是最大的,无论在哪个类哪个包(只要导入)都可以访问。
private访问修饰符就是为了配合封装使用,增加代码隐秘性。
不写访问修饰符就是默认修饰符。
| 修饰符\作用域 | 同一类中 | 同一包中 | 子类中 | 其他地方 |
| private | 可以使用 | 不可以使用 | 不可以使用 | 不可以使用 |
| 默认修饰符 | 可以使用 | 可以使用 | 不可以使用 | 不可以使用 |
| protected | 可以使用 | 可以使用 | 可以使用 | 不可以使用 |
| public | 可以使用 | 可以使用 | 可以使用 | 可以使用 |
封装
JAVA中封装的市值就是将类的信息隐藏在类的内部,其他类不可以直接访问,要通过这个类提供的方法实现对隐藏信息的操作和访问(即get/set方法),封装反映了事物的相对独立性,实现松耦合关系(指尽量减少对象之间的关联性,降低他们之间的复杂性和依赖性)
public class Student {
private String name;//学生姓名
private int age;//学生年龄
private int num;//学生学号
private float score;//学生成绩
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public float getScore() {
return score;
}
public void setScore(float score) {
this.score = score;
}
}
以上代码就是将Student类的成员属性私有化(private),这样其他类就算声明了Student类或者继承了Student类都无法去修改他的成员变量。
这样我们可以提供get/set方法来给其他类去实现私有成员变量的修改,这样一来,如果你的成员变量不想让别人获取或者修改,我们只要把get或者set方法删掉,别人就无法进行获取或者修改了。
需要注意一点的是,一般父类(继承篇)的属性都是私有化的,那么其他类继承了这个父类,想要通过构造方法直接初始化赋值的话,那么父类就要创建相同的构造方法让子类继承这个方法再去实现父类成员的访问。在继承中会详细讲到。
浙公网安备 33010602011771号