一. 封装
1.1 生活中的封装体
比如:快递包裹、电脑机箱
1.2 封装的好处
- 提高了代码的安全性
- 提高了代码的复用性
1.3 Java中的封装体
- 类:封装了这一类事物的属性和功能
- 方法:封装了执行某个功能的代码段
- 属性
1.4 安全隐患
例如:向age属性赋值了2000,年龄为2000不合法
原因:
1.属性可以随意的调用
2.输入的数值没有进行合理性的判断
解决:
1.对属性进行封装,将其私有化,使用private关键字修饰属性,能够使该属性只能在本类中被访问,对于其他类不可见。
private int age;
2.对外提供该属性的访问方式
// 提供设置方式
public void setAge(int age){
this.age = age;
}
// 提供获取方式
public int getAge(){
return age;
}
3.在设置属性值时对数据进行合理性的判断
二. 继承
2.1 概念
- 生活中,指的是子女可以直接拿到父母的财产。
- 代码中,指的是子类可以直接访问到父类的成员。
父类:超类、基类
子类:派生类、衍生类
2.2 继承关系的定义
1、定义父类、子类
2、使用关键字extends,
格式:
public class 子类 extends 父类{}
2.3 继承的好处
- 提高了代码的复用性,子类可以直接访问父类中非私有的属性和功能
2.4 特点
- 一个类可以有多个子类
- 继承具有传递性
- 一个类不能同时继承两个父类
2.5 子父类中成员变量的特点
- 子父类中没有同名成员变量,则子类使用父类中的成员变量;
- 子父类中出现了同名成员变量,那么子类使用自己的成员变量;子类中想要访问父类的成员变量,需要使用super来表示父类的对象,从而调用父类中的成员变量。
- 子类除了可以拥有父类的成员变量外,还可以定义自己特有的成员变量
2.6 子父类中成员方法的特点
- 子类除了可以拥有父类的成员方法外,还可以定义自己特有的方法
- 当子父类中具有同名方法时,子类会对父类中的功能进行增强、扩展,这种行为称为子类对父类的方法进行重写(override,复写、覆盖)
- 重写
1、方法名、返回类型、参数列表必须与父类一致
2、范围修饰符必须大于等于父类的
public > protected > [default] > private
- 重写
2.7 子父类中构造函数的特点
- 任何一个类的构造函数的第一行都默认隐式的调用了父类的无参构造函数
- 父类构造函数重载后,子类需要重载与父类重载形式相同的构造函数,并且必须在子类的这个构造函数的第一行调用父类的重载构造函数
目的:因为父类的属性私有化后,子类无法直接访问,所以,子类无法重载构造函数并同时对属性进行赋值,此时需要通过父类的构造函数间接的帮助子类在创建对象的同时进行赋值
2.8 Object
Object类是所有类的父类,所有类都直接或者间接的继承了Object。
2.9 继承的思想
1、继承是子类的共性内容向上不断抽取形式的
2、父类中包含了子类,子类是父类的一部分
3、子类的功能往往比父类的功能更多更强,因为父类的功能子类都能继承下,并且子类可以重写父类功能,还可以定义子类的特有功能。