关于Java访问控制
这篇文章是《西雅图咨询公司2021年圣诞日历》的第五天文章。
大家好,我是西雅图咨询的小泉。
首先
我总结了关于学习编程初期遇到的访问控制困难。我为初学者编写了这个,所以如果你想了解访问控制,请务必利用它。
终点
能够理解访问修饰符的作用和使用场景。
对于字段和方法的访问控制
在Java中,您可以对每个字段和方法进行访问控制。
它具有从以下4个级别中选择访问控制级别的机制。
请注意:在类的访问控制和方法以及字段的访问控制中,我们将优先考虑限制更严格的那一方。
使用实例(公共和私人)
这次我们将解释常见的public和private的用法示例。
public和private是修饰符,用于确定其所附加的元素(类、字段、方法、构造函数)的可见性。public具有“公开”的意思,使用public修饰的元素可以从任何地方(即所有类)访问。
相反,还有一个名为private的修饰符。这个修饰符可以用于字段、方法和构造函数,但是使用private修饰的元素无法被其他类引用。
例如,考虑以下类:
public class Rectangle {
private double width;
private double height;
public Rectangle(double w, double h) {
this.width = w;
this.height = h;
}
public double area() {
return this.width * this.height;
}
}
创建如上所述的类时,可以从其他类访问具有public修饰符的构造函数和area方法。
// 他のクラス
public class RectangleAction1 {
public static void main(String[] args) {
Rectangle r = new Rectangle(1.0, 2.0);
// --OK
System.out.println("area = " + r.area());
// --OK
}
}
然而,对于标有 private 的 double 类型的字段 height,无法从其他类进行访问。
// 他のクラス
public class RectangleAction2 {
public static void main(String[] args) {
Rectangle r = new Rectangle(1.0, 2.0);
// --OK
// private なのでどちらもコンパイルエラー
r.width = 3.0;
r.height = 4.0
System.out.println("area = " + r.area());
// --OK
}
}
如果使用private关键字,有一个好处是“不会被意外地修改希望保持不变的信息”,另外,如果不小心尝试修改,编译错误会让你知道这是程序错误,不需要再额外运行程序来确认。
但是,private关键字也允许在同一类中读取和修改信息。
public class Rectangle {
private double width;
private double height;
public Rectangle(double w, double h) {
// 自分のクラスからは書き込めます
this.width = w;
this.height = h;
}
public double area() {
// 自分のクラスからは読み出せます
return this.width * this.height;
}
}
最后
通过了解访问控制,可以防止恶意或错误的使用。我认为这对于进行开发来说是必要的知识,希望这篇文章对大家有所帮助。