封装
目标
理解封装的概念
掌握private关键字
为什么需要封装?
编写一个类,代表3G教员,要求:
具有属性:姓名、年龄
具有行为:自我介绍
3G教员的最小年龄要求:22岁
public class Teacher1 {
public Stringname; // 教员姓名
public int age;// 年龄
/**
* 返回自我介绍的内容
*/
public String introduction() {
return "大家好!我是" +name + ",我今年" + age + "岁";
}
}
编写一个测试类,要求:
实例化一个教员对象,并对其初始化
在控制台输出该教员的自我介绍
public class Teacher1Test {
public static void main(String[] args) {
Teacher1 teacher = new Teacher1();
teacher.name ="李芳";
teacher.age = 10;
System.out.println(teacher.introduction());
}
}
要满足教员的最小年龄要求,可以通过对属性的封装来实现
什么是封装?
封装,就是隐藏实现细节
将属性私有化,提供公有方法访问私有属性
通过这些公有方法访问私有属性
public class Teacher2 {
private Stringname; // 教员姓名
// 返回教员姓名
public String getName() {
return name;
}
// 设定教员姓名
public void setName(String name) {
this.name = name;
}
}
通过setter、getter方法访问name属性:
Teacher2 teacher = new Teacher2();
teacher.setName ("李芳");
String tName = teacher.getName();
封装的实现:
1、修改属性的可见性来限制对属性的访问
2、为每个属性创建一对赋值(setter)方法和取值(getter) 方法,用于对这些属性的访问
3、在setter和getter方法中,加入对属性的存取限制
public class Teacher3 {
private Stringname; // 教员姓名
private int 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 < 22) {
System.out.println("错误!最小年龄应为22岁!");
this.age = 22;// 如果不符合年龄要求,则赋予默认值
} else {
this.age = age;
}
}
}
测试类通过调用setter方法,为对象的各个属性赋值:
public class Teacher3Test {
public static void main(String[] args) {
Teacher3 teacher = new Teacher3();
teacher.setName("李芳");
teacher.setAge(10);
System.out.println(teacher.introduction());
}
}
输出:错误!最小年龄应为22岁!
大家好!我是李芳,我今年22岁
使用封装,增加了数据访问限制,增强了程序的可维护性。