如下代码配套视频:《25. 封装|数据防护,隐藏细节的艺术》
25.1 属性封装
Student.java
package com.encapsulation.demo1;
/**
* 今日头条:老陈说编程
* Java封装
*/
public class Student {
// 隐藏信息-学生姓名
private String name;
// 隐藏信息-学生年龄
private int age;
// 提供对外的方法(接口)-设置学生姓名
public void setName(String name) {
// 在这可以进行一些限制 - 将参数name赋值给当前对象的name属性
this.name = name;
}
// 提供对外的方法(接口) - 获取学生姓名
public String getName() {
// 返回学生姓名
return name;
}
// 提供对外的方法(接口) - 设置学生年龄
public void setAge(int age) {
// 将参数age赋值给当前对象的age属性
this.age = age;
}
// 提供对外的方法(接口) - 获取学生年龄
public int getAge() {
// 返回学生年龄
return age;
}
}
Main.java
package com.encapsulation.demo1;
//属性封装测试
public class Main {
public static void main(String[] args) {
Student student = new Student();
//只能通过方法设置属性
student.setName("王老虎");
student.setAge(16);
//只能通过方法访问属性
System.out.println(student.getName() + ",满"
+ student.getAge() + "岁了.");
}
}
25.2 接口封装
AnnualLeave.java
package com.encapsulation.demo2;
//今日头条:老陈说编程
public interface AnnualLeave {
//计算年假
double computeYear(int entryAge);
}
AskForLeave.java
package com.encapsulation.demo2;
//今日头条:老陈说编程
//实现年假计算
public class AskForLeave implements AnnualLeave {
public double computeYear(int entryAge) {
if (entryAge >= 1) {
return 5.0;
} else {
return 0.0;
}
}
}
Main.java
package com.encapsulation.demo2;
//接口封装测试
public class Main {
public static void main(String[] args) {
AnnualLeave annualLeave = new AskForLeave();
double c = annualLeave.computeYear(1);
System.out.println("工作忙1年,可以休" + c + "天年假。");
}
}