面向对象三大特征之一 —— 封装
什么是封装
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提 供的方法来实现对隐藏信息的操作和访问
大致原则
1、把尽可能多的东西藏起来,对外提供便捷的接口
2、把所有的属性藏起来
为什么用封装:
屏蔽方法的复杂性
增强的代码的安全性
减少代码的耦合度
如何实现封装:
封装的好处:
1、便于使用者正确使用系统,防止错误修改属性
2、有助于系统之间的松耦合,提高系统独立性
3、提高软件的可重用性
4、降低了构建大型系统的风险
总结:
1、属性 -private
2、添加对应的setter/getter
3、对属性合法值进行判断
练习封装
使用封装实现男朋友系统的男朋友类正确输入健康值和亲密度
保证健康值的有效性(0-100),否则取默认值60
保证亲密度的有效性(0-100),否则取默认值60
package day01;
public class BoyFriend {
//属性 身高 年龄 籍贯 健康值 亲密度
private String name="洪七公";
private int height=184;
private int age=54;
private String address="华山";
private int health=80;
private int love=100;
//通过快捷键 对所有的属性生成 get和 set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHeight() {
return height;
}
//设置身高
public void setHeight(int height) {
if (height<100||height>300){
this.height=180;
}else{
this.height = height; }
}
public int getAge() {
return age;
}
//设置年龄
public void setAge(int age) {
if (age<10||age>100){
this.age=21;
}else{
this.age = age;}
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getHealth() {
return health;
}
//设置健康属性
public void setHealth(int health) {
if (health<0||health>100){
this.health=60;
}else{
this.health = health;
}
}
public int getLove() {
return love;
}
//设置亲密度
public void setLove(int love) {
if (love<0||love>100){
this.love=60;
}else{
this.love = love;
}
}
public void print(){
System.out.println("我叫:"+name);
System.out.println("身高:"+height);
System.out.println("年龄:"+age);
System.out.println("来自:"+address);
System.out.println("健康值:"+health);
System.out.println("亲密度:"+love);
}
}
package day01;
import java.util.Scanner;
public class Testbf {
public static void main(String[] args) {
BoyFriend bf = new BoyFriend();
bf.print();
System.out.println("===========修改后的内容=========");
Scanner input = new Scanner(System.in);
//设置姓名
System.out.print("请输入你男朋友的姓名:");
String name = input.next();
//接收键盘的姓名赋值到封装的set 方法中
bf.setName(name);
//设置身高
System.out.print("请输入你男朋友的身高:");
int height = input.nextInt();
//接收键盘的身高赋值到封装的set 方法中
bf.setHeight(height);
//设置姓名
System.out.print("请输入你男朋友的年龄:");
int age=input.nextInt();
//接收键盘的姓名赋值到封装的set 方法中
bf.setAge(age);
System.out.print("请输入你和男朋友的亲密度:");
int love =input.nextInt();
//接收键盘的姓名赋值到封装的set 方法中
bf.setLove(love);
System.out.print("请输入你男朋友的健康值:");
int health=input.nextInt();
//接收键盘的姓名赋值到封装的set 方法中
bf.setHealth(health);
System.out.print("请输入男朋友的地址:");
String address =input.next();
//接收键盘的姓名赋值到封装的set 方法中
bf.setAddress(address);
bf.print();
}
}
结果展示: