MST
星途 面试题库

面试题:Java中访问控制符在类设计中的应用

请简述Java中四种访问控制符(public、protected、default、private)的访问权限范围,并举例说明在类的成员变量和方法定义中如何合理使用它们来设计一个具有良好封装性的类。
37.6万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

1. 访问权限范围

  • public
    • 对所有类可见。可以在任何地方(同一包内、不同包内、子类、非子类)访问。
  • protected
    • 对同一包内的类和所有子类可见。不同包内的非子类无法访问。
  • default(默认,无关键字)
    • 对同一包内的类可见。不同包内的类,无论是否是子类,都无法访问。
  • private
    • 仅对本类可见。其他任何类都无法访问,即使是子类也不行。

2. 封装性类设计示例

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) {
        if (name != null &&!name.isEmpty()) {
            this.name = name;
        }
    }

    // 受保护的获取年龄方法,一般用于子类扩展
    protected int getAge() {
        return age;
    }

    // 默认访问权限的方法,仅同一包内可访问
    void printInfo() {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}

在上述示例中,nameage 成员变量被设为 private,保证了数据的安全性和封装性。通过 publicgetNamesetName 方法来访问和修改 name,在 setName 方法中可进行数据合法性检查。getAge 方法设为 protected,方便子类继承和扩展。printInfo 方法采用默认访问权限,限制在同一包内使用,体现了不同访问控制符在设计具有良好封装性类时的合理运用。