封装是面向对象编程的一项基本原则,它指的是将类的内部实现细节隐藏起来,只对外部提供有限的访问接口。在 Java 中,封装通过访问修饰符和 getter/setter 方法来实现。

1. 访问修饰符:

在 Java 中,有四种访问修饰符用于控制类的成员的访问权限:

  •  public: 对所有类可见。

  •  protected: 对同一包内的类和所有子类可见。

  •  default(默认): 对同一包内的类可见,不使用任何修饰符。

  •  private: 对同一类内可见。


2. 封装的实现:
public class Person {
    // 封装的属性
    private String name;
    private int age;

    // 构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 封装的方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age > 0) {
            this.age = age;
        } else {
            System.out.println("Invalid age");
        }
    }
}

在上面的例子中,Person 类封装了两个私有属性 name 和 age,并提供了公有的 getter 和 setter 方法来访问和修改这些属性。这样,外部代码不能直接访问这些属性,必须通过提供的方法来进行操作,从而控制了对属性的访问。

3. 封装的优势:

  •  控制访问权限: 可以通过设置访问修饰符来限制对类的成员的访问权限,提高了代码的安全性。

  •  隐藏实现细节: 封装允许类的实现细节被隐藏,外部只需要关心类的公有接口,而不必了解其内部实现。

  •  提供公共接口: 通过 getter 和 setter 方法提供统一的、可控制的访问接口,使得类的使用更加灵活。


4. 访问权限和封装的注意事项:

  •  尽量将属性设置为私有(private): 避免直接访问和修改类的属性,通过公有的方法进行控制和验证。

  •  不要过度封装: 不是所有的属性都需要封装,只有需要对外提供控制和验证的属性才需要封装。

  •  使用适当的访问修饰符: 根据实际需要选择适当的访问修饰符,避免过度开放或过度封闭。



转载请注明出处:http://www.zyzy.cn/article/detail/428/Java