面试题答案
一键面试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);
}
}
在上述示例中,name
和 age
成员变量被设为 private
,保证了数据的安全性和封装性。通过 public
的 getName
和 setName
方法来访问和修改 name
,在 setName
方法中可进行数据合法性检查。getAge
方法设为 protected
,方便子类继承和扩展。printInfo
方法采用默认访问权限,限制在同一包内使用,体现了不同访问控制符在设计具有良好封装性类时的合理运用。