1、继承
class 父类 {
}
class 子类 extends 父类 {
}
-
概念
- 继承通过extends关键字来实现,其中SubClass称为子类,SuperClass称为父类,基类,或超类
-
作用
- 代码重用,代码复用
-
单继承
- 一个类,只能继承一个父类
- 一个类,可以有多个子类
-
不继承
- 构造方法不继承
- 没有访问权限的成员不继承
- 静态成员不继承
2、多态
多态指的是编译器(申明变量是)和运行期(创建对象后)表现为不同的形态(数据类型)
-
三个条件
- 继承的存在(继承是多态的基础,没有继承就没有多态)
- 子类重写父类的方法(多态下调用子类重写的方法)
- 父类引用变量指向子类对象(子类到父类的类型转换)
-
子类转父类规则
- 将一个父类的引用指向一个子类的对象,称为向上转型(upcastiog),自动进行类型转换.
- 此时通过父类引用调用的方法是子类覆盖或继承父类的方法,不是父类的方法.
- 此时通过父类引用变量无法调用子类特有的方法
- 如果父类要调用子类的特有方法就得将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型,此时必须进行强制类型转换
3、封装
-
访问控制符
-
private
- 成员变量和方法只能在类内被访问,具有类可见性.
-
default
- 成员变量和方法只能被同一个包里的类访问,具有包可见性
-
protected
- 可以被同一个包中的类访问,被同一个项目中不同包中的子类访问
-
public
- 可以被同一个项目中所有类访问,具有项目可见性,这是最大的访问权限
-
-
好处
- 隐藏类的实现细节
- 让使用者只能通过程序员规定的方法来访问数据
- 可以方便的加入存取控制语句,限制不合理操作
-
具体步骤
- 修改属性的可见性来限制对属性的访问
- 为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些属性的存取
- 在赋值方法中,加入对属性的存取控制语句