Java 方法重载Java 多态
Java 封装
在本教程中,您将借助示例学习Java中的封装和数据隐藏。
Java 封装封装是面向对象编程的重要功能之一。封装是指将字段和方法绑定在单个类中。
将类中的类似字段和方法捆绑在一起也有助于隐藏数据。
封装字段和方法通常,封装是将类似代码包装在一个地方的过程。
在Java中,我们可以将在单个类中一起操作的字段和方法捆绑在一起。例如,
class Rectangle {
int length;
int breadth;
public void getArea() {}
}在上面的程序中,getArea()方法计算矩形的面积。为了计算面积,它需要长度(length)和宽度(breadth)。因此,数据字段length、breadth和方法getArea()被放在Rectangle类中。
Java 数据隐藏数据隐藏是一种通过隐藏实现细节来限制数据成员访问的方法。
封装还提供了一种隐藏数据的方法。
数据隐藏可以通过访问修饰符来实现。在Java中,有四个访问修饰符:
public - 修饰的属性或方法是公有的,可以在任何地方被访问到,默认所有的属性和方法都是 public 的
private - 修饰的属性或方法是私有的,不能在声明它的类的外部访问
protected - 修饰的属性或方法是受保护的,它和 private 类似,区别是它在子类中也是允许被访问的
default - 即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。
要了解更多信息,请访问Java 修饰符。
示例1:使用 private 数据隐藏class Person {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
class Main {
public static void main(String[] args) {
Person p1 = new Person();
p1.setAge(24);
System.out.println("我的年龄是 " + p1.getAge());
}
}输出结果
我的年龄是 24在上面的实例中,我们有一个private字段age。因为它是私有的,所以不能从类外部访问它。为了访问age,我们使用了公共方法getAge()和setAge()。这些方法称为getter和setter方法。
如果尝试从Main类中访问age字段,则会出现错误消息。
p1.age = 24; // error: age has private access in Person将age设置为私有,可以限制来自类外部未经授权的访问。这是数据隐藏。
示例2:使用 protected 数据隐藏class Person {
protected String profession;
protected void displayInfo() {
System.out.println("I am a " + profession);
}
}
class Teacher extends Person {
public static void main(String[] args) {
Teacher t1 = new Teacher();
t1.profession = "teacher";
t1.displayInfo();
}
}输出结果
I am a teacher在上面的程序中,我们创建了一个Person类,其中包含protected字段 profession 和protected方法displayInfo()。
我们已经从Teacher类(Person的子类)访问了这些成员。
为什么要封装?在Java中,封装可帮助我们将相关的字段和方法保持在一起,从而使我们的代码更整洁且易于阅读。
它有助于控制我们数据字段的修改。 考虑一种情况,我们希望类中的age字段为非负数。 在这里,我们可以将age设为私有,并可以在setAge()方法内部应用逻辑。 例如,
class Person {
private int age;
public void setAge(int age) {
if (age >= 0) {
this.age = age;
}
}
}getter和setter方法提供对我们的类字段的只读或只写访问。例如,
getName() // 提供只读访问
setName() //提供只写访问它有助于解耦系统的组件。这些解耦的组件可以独立且同时进行开发,测试和调试。并且,特定组件的任何更改都不会对其他组件产生任何影响。
数据隐藏 与 封装人们通常认为封装是数据隐藏,但这并不完全正确。
封装是指将相关字段和方法捆绑在一起。这使得我们能够实现数据隐藏。封装本身并不是数据隐藏。
Java 方法重载Java 多态