Java

Java 知识量:11 - 45 - 220

3.4 数据隐藏和封装><

什么是数据隐藏和封装- 3.4.1 -

数据隐藏和封装是面向对象编程的两个重要概念,它们有很多交叉的方面。

1、数据隐藏:数据隐藏是一种保护数据的方式,防止用户直接访问或修改数据。这可以通过将数据声明为私有(private)来实现。私有数据只能在其所在的类内部访问,外部的类无法直接访问或修改这些数据。这是Java中数据隐藏的主要方式。例如:

public class MyClass {  
    private int myData; // 私有数据  
      
    // 公开的获取和设置方法  
    public int getMyData() {  
        return myData;  
    }  
      
    public void setMyData(int myData) {  
        this.myData = myData;  
    }  
}

在这个例子中,myData是一个私有数据,只能通过公开的getMyData()和setMyData()方法进行访问和修改。
2、数据封装:数据封装是面向对象编程中的一个重要概念,它是指将数据和操作数据的函数(通常称为方法)绑定到一个对象中。在Java中,这通常通过将数据声明为私有,并提供公开的“getter”和“setter”方法来实现。这种方式可以保护数据的安全性和完整性,因为可以控制如何通过这些方法访问和修改数据。

数据隐藏和封装通常一起使用,以保护数据的安全性和完整性,同时提供了一种控制数据访问和修改的方式。

访问控制规则- 3.4.2 -

Java的访问控制规则是Java语言的一个核心特性,它们决定了类、接口、变量、方法和构造函数的可访问性。以下是Java的访问控制规则:

  • 包级访问控制:如果一个类、接口、变量、方法或构造函数没有访问修饰符(如public、private、protected),那么它们只能被定义在相同包中的其他类访问。

  • 公共访问控制:如果一个类、接口、变量、方法或构造函数被声明为public,那么它们可以被任何其他类访问。

  • 私有访问控制:如果一个类、接口、变量、方法或构造函数被声明为private,那么它们只能被定义在同一类中的其他方法或构造函数访问。

  • 保护访问控制:如果一个类、接口、变量、方法或构造函数被声明为protected,那么它们可以被定义在同一包中的其他类访问,也可以被所有子类访问,即使子类不在同一包中。

注意:这些规则也适用于继承。子类只能访问其父类中声明为public或protected的成员。父类的private成员对子类是不可见的。

此外,还有一个特殊的访问控制级别,称为“友好的”(或默认的),适用于在同一个包中的类或接口。如果一个类或接口没有显式的访问修饰符,那么它就是友好的。友好的类只能被定义在同一个包中的其他类访问。

Java的访问控制规则有助于实现封装和多态,这是面向对象编程的两个核心原则。

数据访问器方法命名规则- 3.4.3 -

在Java和其他许多面向对象的编程语言中,数据访问器方法(也称为 getter 和 setter 方法)通常遵循某种命名约定。这种约定有助于使代码更易于理解和维护。

通常,getter 方法以 "get" 开头,用于返回对象的一个属性值。例如,如果有一个名为 "age" 的属性,那么获取这个属性的 getter 方法可能会命名为 "getAge"。

同样,setter 方法通常以 "set" 开头,用于设置对象的属性值。以 "age" 属性为例,设置这个属性的 setter 方法可能会被命名为 "setAge"。

这是一个简单的例子:

public class Person {  
    private int age;  
  
    public int getAge() {  
        return age;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
}

在这个例子中,"getAge" 是一个 getter 方法,用于获取 "age" 属性的值,而 "setAge" 是一个 setter 方法,用于设置 "age" 属性的值。

这种命名约定并不是 Java 语言的一部分,但它是许多 Java 程序员和许多其他面向对象的编程语言所遵循的一种约定。