1. 概述
1.1 封装是面向对象思想的特征之一。面向对象的三大特性分别为封装、继承、多态。接下来,具体学下封装。
1.2 封装的变现
1. 方法就是一个最基本的封装体
2. 类也是一个封装体
1.3 封装有什么好处,为什么需要它?
1.提高了代码的复用性
2.隐藏了实现细节,还要提供对外访问方式,便于调用者调用。这是核心之一,也可以理解为封装的定义。
3.提高了代码的安全性
2.封装的举例
机箱:
一台电脑,它是由CPU、主板、显卡、硬盘、电源等硬件组成。这些硬件组装在一起就可以使用电脑了,但是这些部件放在外面很容易造成不安全因素,因此使用机箱将这些硬件都装在里面,并在机箱外留有一些插口。
3.private私有的
封装在Java中的体现:
class Person {
// 私有成员变量
private int age;
private String name;
// 对外提供设置成员变量的方法
public void setAge(int a) {
// 由于是设置成员变量的值,这里可以加入数据的验证
if (a < 0 || a > 130) {
System.out.println(a + "不符合年龄的数据范围");
return;
}
age = a;
}
// 对外提供访问成员变量的方法
public void getAge() {
return age;
}
}
public class PersonDemo {
public static void main(String[] args) {
Person p = new Person();
p.setAge(30);
System.out.println("大家好,今年我" + p.getAge() + "岁");
}
}
上述代码将年龄和姓名进行private修饰(私有化),并提供对外访问的方式,getXxx()和setXxx()方法
注意:private(私有)仅仅是封装的体现形式而已。
4.成员变量和局部变量同名问题
当在方法中成员变量和局部变量同名的时候,在方法中如何区分成员变量和局部变量呢?这个时候我们将用到this关键字
class Person {
private int age;
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
}
public class PersonDemo {
public static void main(String[] args) {
Person p = new Person();
p.setAge(30);
System.out.println("大家好,今年我" + p.getAge() + "岁");
}
}