1、生活中封装:
快递,外卖,电脑机箱…
2、java中封装:
隐藏类内部的细节,对外部提供一些访问细节的方法。
3、封装例子:
方法,类,属性。
4、封装好处:
提高代码复用性,提高代码安全性,提高代码易用性
5、实现步骤:
1)、隐藏内部细节(属性)
2)、提供一些可以访问方法(getter/setter方法)
6、getter:
读方法语法
public 数据类型 get属性名(){
return 属性;
}
public:getter方法必须要由public修饰
数据类型:要与封装属性的属性类型要一致
get属性名:命名规则是get属性名,属性名首字母要大写。
7、setter:
写方法语法
public void set属性名(参数类型 参数名){
属性名 = 参数名;
}
void:该方法用于给属性赋值,所以没有返回值。
set属性名:命名规则是set属性名,属性名首字母要大写。
参数类型 参数名:参数类型要与封装属性的类型一致,参数名可以与属性名一致也可以不一致。
属性名 = 参数名:将传入参数中值赋给属性空间。
class Person {
private String name = "刘备";//显式赋值
private int age = 18;
public void show() {
System.out.println(name + "..." + age);//刘备...18
}
//getter
public int getAge() {
return age;
}
public String getName() {
return name;
}
//setter
public void setAge(int newAge) {
if (newAge > 0 && newAge <= 120) {//如果年龄在0~120,则录入成功。
age = newAge;
}
}
public void setName(String newName) {
name = newName;
}
}
public class Demo5_封装 {
public static void main(String[] args) {
Person p = new Person();
//问题:18和刘备的数据是由用户提供,这时出现用户误操作问题。
//解决:使用封装
//步骤:1、隐藏内部细节(使用private修饰属性,该属性只能在本类中使用,其他类不能使用)。
// 2、提供一些可以访问细节的方法(getter/setter,读方法/写方法,可以只有读/写方法)
//p.age = 180;
//p.name = "刘备";
//System.out.println(p.age + "..." + p.name);//180...刘备
p.setName("曹操");
p.setAge(200);
p.show();//曹操...200
}
}