一.封装的思想
1 思想从何而来
我的观点:
从现实世界来,人的个体是对各种状态和行为的封装,行为又是对实现步骤的封装。
例如人有不同的年龄状态,财富状态,有做饭的行为,做饭又包括洗米,下锅等步骤。
一旦你老妈叫你做饭,那么她不关心你做饭的细节过程,只关心结果。因为你已经将做的饭步骤细节已经完整封装了
类是对属性和方法的封装,方法是对实现细节的封装。
其他观点:
封装是对一些属性和行为进行隐藏,例如财富,它是一个隐私,我不想让外面去看到
2 封装的好处
属性的读写控制,数据的安全检查(提高安全性)
v 隐藏实现细节, 减少修改、扩展类时对外界组件的影响,增强易维护性
v 提高软件的可复用性
3 封装的步骤:
3.1
用private修饰属性
3.2
每个属性添加set,get方法。
3.3
在set,get 方法中加控制语句。
二.访问控制符
(1)public
访问控制符干什么用的
就是对属性和方法进行不同程度的隐藏
public
1 可以修饰类
表示这个类可以被引入到任何地方使用
2 可以修饰属性和方法
表示这个属性和方法,可以在本类,本包其它类中,其它包的类中使用
(2)protected
protected 受保护的
1 不能用来修饰类
2 可以修饰属性和方法
表示这个属性和方法,不能在其它包中访问,可以在本包中的其它类,可以在其它包的子类通过this/super访问
(3)default
不加任何访问控制符就表示default
default
可以修饰类,表示该类只能在当前包中使用
可以修饰方法,属性,表示属性和方法 只能在当前包中的类里使用
(4)private
1 何为完全封装
对所有的属性进行private隐藏,然后为这些属性提供get/set方法来存取访问
2 get/set方法的写法
boolean值
setXxx, isXxx
其它类型
setXxx,getXxx
import java.util.Scanner;
public class Account {
private String name;
private int age;
private double money;
private Scanner input;
private Scanner input2;
public Account() {
super();
}
public Account(String name, int age, double money) {
super();
this.name = name;
this.age = age;
this.money = money;
}
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>1&&age<150) {
this.age = age;
}
else {
System.out.println("请输入正确的年龄");
this.age=1;
}
}
public double getMoney() {
input = new Scanner(System.in);
System.out.print("请输入密码:");
String password=input.next();
if (password.equals("111")) {
return money;
}
else {
System.out.println("密码错误,无法查看");
}
return 0;
}
public void setMoney(double money) {
input2 = new Scanner(System.in);
System.out.print("请输入密码:");
String password=input2.next();
if (password.equals("111")) {
this.money =this.money+ money;
}
else {
System.out.println("密码错误,无法修改!");
}
}
}