封装、继承、多态
一.面向对象的三大特征
(1.)封装:encapsulation
●封装是什么?封装的目的?
①.隐藏类的实现细节
②.让使用者只能通过预定方法访问数据,限制对成员变量不合理访问
③.可进行数据检查,从而有利于保证对象信息的完整性
④.便于修改,提高代码的可维护性
⑤.将对象的成员变量和实现细节隐藏起来,不允许外部直接访问
⑥.方法暴露出来,让方法控制成员变量进行安全访问和操作
●访问控制权限:private、default、protected、public
●Getter和Setter方法。
●javabean 规范
①.公开的类 public 修饰的
②.私有的属性 private
③.公开的 getter、setter 方法
④.提供公开的无参构造方法(默认)
(2.)继承:inherited
● 什么是继承?以及意义。
java继承通过extends关键字来实现只能单继承,可以多层继承,但不能同时继承两个父类,子类和父类必须满足isA关系,父类是大类,子类是小类,子类可以访问到父类所有的可见成员(private)
● 方法重写(重要)
子类包含父类同名方法的现象称为方法的重写(override),也称为方法的覆盖
①.方法名相同,参数列表相同
②.子类重写方法的返回值类型 <= 父类的返回值类型
③.子类重写方法的访问权限 >= 父类的访问权限
④.不能抛出更多异常(暂时不研究)
(3.)多态:polymorphism
一个对象在不同条件下表现出不同的形态,java引用变量有两个类型:一个是编译时类型,一个是运行时类型。编译时类型由声明变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现所谓的多态。
● 编译看左,运行看右。
■ 编译期,看的是父类型引用的方法是否存在
■ 运行期,看到是子类实例的重写后的该方法
● 多态语法要求
■ 必须具有关系(继承、实现)
■ 父类型调用重写的方法,此时才有多态现象
●参数多态
■ 在进行 api 设计时,一般都是参数多态
■ 不会去写一个具体的子类,而是写父类型或接口类型