此教程演示了Java编程语言中封装的用法
什么是封装
封装就是将变量和方法包装在一个单元中。封装也称为数据隐藏。为什么?因为,当您设计类时,您可以使变量对其他类隐藏,只提供处理数据的方法。您的类应该设计成黑匣子。您可以从外部(类)访问多个方法,并且可以访问每个方法的返回值类型。您需要了解的有关此类的所有信息是方法的名称和返回值类型。换句话说,你给类一些数据,并得到新的数据作为响应,而无需关心用于数据处理的内部机制。
封装是面向对象编程(OOP)背后的四个主要概念之一。OOP问题在求职面试中很常见,因此您可能会在下次Java求职面试中遇到有关封装的问题。
要实现Java封装:
- 将一个类的变量声明为私有。
- 提供公共的setter和getter方法来修改和查看变量值。
Java封装示例
下面通过示例演示Java中的封装。该Car
类有两个变量,name
和topSpeed
。两者都声明为私有,这意味着它们不能在类外部直接访问。getter和setter方法:getName
,setName
,setTopSpeed
等被宣布公开。这些方法向“外部人员”公开,可用于更改和检索Car
对象中的数据。注意,我们有一个方法来设置车辆的最高速度和两个方法来获取最高速度值,无论是在MPH或公里/小时。这就是封装的作用——它隐藏了数据并为我们提供了所需的值
package com.lintao.encapsulation;
public class Car {
private String name;
private double topSpeed;
public Car() {}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setTopSpeed(double speedMPH) {
topSpeed = speedMPH;
}
public double getTopSpeedMPH() {
return topSpeed;
}
public double getTopSpeedKMH() {
return topSpeed * 1.609344;
}
}
主程序创建一个具有给定名称的 Car
对象,并使用 setter
方法存储此实例的最高速度。现在,我们可以轻松获得MPH或KMH中的速度,而无需关心在_Car_类中如何转换速度。
package com.lintao.encapsulation;
public class EncapsulationExample {
public static void main(String[] args) {
Car car = new Car();
car.setName("Porsche Cayenne 4.8-litre V8");
car.setTopSpeed(173.0d);
System.out.println(car.getName() + " top speed in MPH is " + car.getTopSpeedMPH());
System.out.println(car.getName() + " top speed in KMH is " + car.getTopSpeedKMH());
}
}
这是示例的输出
Porsche Cayenne 4.8-litre V8 top speed in MPH is 173.0
Porsche Cayenne 4.8-litre V8 top speed in KMH is 278.416512
让我们总结一下封装的好处:
- 可以将类的变量设置为只读或只写。
- 一个类可以完全控制其变量中存储的内容。
- 类的用户不知道该类如何存储其数据。保证了数据的安全性。