共计 1768 个字符,预计需要花费 5 分钟才能阅读完成。
封装(Encapsulation)是面向对象编程的一个外围概念,它意味着将数据(属性)和办法(操作数据的函数)捆绑在一起,造成一个类(Class)。封装的目标是将数据和操作数据的办法暗藏起来,以避免内部对数据的间接拜访。这样,咱们就能够通过定义公共接口(Public Interface)来管制内部对类的拜访,进步代码的可维护性和安全性。
Java 提供了四种拜访修饰符(Access Modifier)来实现封装,它们别离是:public
、private
、protected
和不写(默认)。拜访修饰符能够润饰类的属性和办法,不同的拜访修饰符有不同的拜访权限。
- public:最高权限,示意该属性或办法能够被任何其余类拜访。
- private:最低权限,示意该属性或办法只能被其所在的类拜访。
- protected:较低权限,示意该属性或办法能够被其所在类及其子类和同一包中的其余类拜访。
- 默认 :示意该属性或办法能够被其所在类和同一包中的其余类拜访,但不能被子类拜访。
让咱们通过一个案例来理解这四种拜访修饰符。
// 位于包 com.example 的 Person 类
package com.example;
public class Person {
public String name; // 公共属性,任何类都能够拜访
private int age; // 公有属性,只能在 Person 类中拜访
protected String address; // 受爱护属性,能够在 Person 类,同一包中的类和子类中拜访
String phoneNumber; // 默认属性,能够在 Person 类和同一包中的类拜访,但不能被子类拜访
public void sayHello() { // 公共办法,任何类都能够拜访
System.out.println("Hello! I am" + name);
}
private void growUp() { // 公有办法,只能在 Person 类中拜访
age++;
}
protected void changeAddress(String newAddress) { // 受爱护办法,能够在 Person 类,同一包中的类和子类中拜访
address = newAddress;
}
void updatePhoneNumber(String newNumber) { // 默认办法,能够在 Person 类和同一包中的类拜访,但不能被子类拜访
phoneNumber = newNumber;
}
}
// 位于包 com.example 的 Employee 类
package com.example;
public class Employee extends Person {public void work() {sayHello(); // 能够拜访父类的公共办法 sayHello
changeAddress("New York"); // 能够拜访父类的受爱护办法 changeAddress
}
}
// 位于包 com.other 的 Another 类
package com.other;
import com.example.Person;
public class Another {public void test() {Person person = new Person();
person.sayHello(); // 能够拜访 Person 类的公共办法 sayHello}
}
这个例子中,Person
类有四个属性和四个办法,别离应用了四种不同的拜访修饰符。Employee
类继承了 Person
类,能够拜访其公共办法和受爱护办法。Another
类尽管不在同一包中,然而能够拜访 Person
类的公共办法。
当咱们设计类时,应该尽量将属性设置为 private
,并通过公共办法(如 getter 和 setter)来拜访这些属性。这样做能够确保类的实现细节不会泄露给内部,进步代码的可维护性和安全性。
总结一下,封装和访问控制是面向对象编程的外围概念之一。通过应用拜访修饰符,咱们能够限度类的属性和办法的拜访权限,从而爱护类的实现细节。了解这些概念并在理论编程中利用它们,能够帮忙咱们编写更加强壮、可保护的代码。
举荐浏览:
https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA
https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g