Java 封装
Java 封装
在本教程中,您将通过示例了解 Java 中的封装和数据隐藏。
Java 封装
封装是面向对象编程的关键特性之一。封装是指将字段和方法捆绑在一个类中。
它防止外部类访问和更改类的字段和方法。这也有助于实现数据隐藏 .
示例 1:Java 封装
class Area {
// fields to calculate area
int length;
int breadth;
// constructor to initialize values
Area(int length, int breadth) {
this.length = length;
this.breadth = breadth;
}
// method to calculate area
public void getArea() {
int area = length * breadth;
System.out.println("Area: " + area);
}
}
class Main {
public static void main(String[] args) {
// create object of Area
// pass value of length and breadth
Area rectangle = new Area(5, 6);
rectangle.getArea();
}
}
输出
Area: 30
在上面的例子中,我们创建了一个名为 Area 的类 .这个类的主要目的是计算面积。
要计算面积,我们需要两个变量:length 和宽度 和一个方法:getArea()
.因此,我们将这些字段和方法捆绑在一个类中。
在这里,也可以从其他类访问字段和方法。因此,这不是数据隐藏 .
这只是封装 .我们只是将相似的代码放在一起。
注意 :人们经常将封装视为数据隐藏,但这并不完全正确。
封装是指将相关领域和方法捆绑在一起。这可以用来实现数据隐藏。封装本身并不是数据隐藏。
为什么要封装?
- 在 Java 中,封装有助于我们将相关的字段和方法保持在一起,从而使我们的代码更简洁易读。
- 它有助于控制我们数据字段的值。例如,
class Person { private int age; public void setAge(int age) { if (age >= 0) { this.age = age; } } }
在这里,我们正在制作 age 变量private
并在setAge()
中应用逻辑 方法。现在,年龄 不能为负数。 - getter 和 setter 方法提供只读 或只写 访问我们的类字段。例如,
getName() // provides read-only access setName() // provides write-only access
- 它有助于解耦系统的组件。例如,我们可以将代码封装成多个包。
这些解耦的组件(捆绑包)可以独立和同时进行开发、测试和调试。而且,特定组件的任何更改都不会对其他组件产生任何影响。 - 我们还可以通过封装实现数据隐藏。在上面的例子中,如果我们将长度和宽度变量更改为私有,那么对这些字段的访问就会受到限制。
而且,它们对外部类是隐藏的。这称为数据隐藏 .
数据隐藏
数据隐藏是一种通过隐藏实现细节来限制我们的数据成员访问的方法。封装还提供了一种数据隐藏方式。
我们可以使用访问修饰符来实现数据隐藏。例如,
示例 2:使用私有说明符隐藏数据
class Person {
// private field
private int age;
// getter method
public int getAge() {
return age;
}
// setter method
public void setAge(int age) {
this.age = age;
}
}
class Main {
public static void main(String[] args) {
// create an object of Person
Person p1 = new Person();
// change age using setter
p1.setAge(24);
// access age using getter
System.out.println("My age is " + p1.getAge());
}
}
输出
My age is 24
在上面的例子中,我们有一个 private
字段 年龄 .既然是private
, 不能从类外访问。
为了访问 age ,我们使用了 public
方法:getAge()
和 setAge()
.这些方法称为 getter 和 setter 方法。
制作年龄 private 允许我们限制来自课堂外的未经授权的访问。这是数据隐藏 .
如果我们尝试访问 age Main 中的字段 类,我们会得到一个错误。
// error: age has private access in Person
p1.age = 24;
java