Java面向对象04
封装
- 该露的露,该藏的藏
- 我们程序设计要追求 "高内聚,低耦合"。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。
- 封装(数据的隐藏)
- 通常,应该禁止直接访问一个对象中数据的实际表示,而应该通过接口来访问,这称为信息隐藏
- 记住这句话就够了:属性私有,get/set
- 意义:
- 提高程序的安全性,保护数据
- 隐藏代码的实现细节
- 统一接口,形成规范
- 增加了系统的可维护性
继承
- 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。
- extends的意思是"扩展"。子类是父类的扩展。
- Java中类只有单继承,没有多继承。
- 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。
- 继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来实现。
- 子类和父类之间,从意义上将应该具有"is a"的关系。
super关键字
- super可以用于访问父类的非private属性以及方法。
- super必须只能出现在子类的方法或构造方法中
- super调用父类的构造方法,必须放在子类构造方法的第一行,可以显式调用,如果不显式调用,则会默认被调用。
- super和this不能同时调用构造方法。
- 当父类中没有无参的构造方法时,子类的构造方法必须显式的调用父类的有参构造方法,并且位与子类构造方法的第一行。
- super 和 this的区别
- 代表的对象不同
- this: 指的是当前这个对象
- super: 指的是父类对象的引用
- 使用前提
- this: 没有继承也可以使用
- super: 只能在继承条件下才可以使用
- 构造方法
- this(): 本类的构造方法
- super(): 父类的构造方法
方法重写
- 子类的方法名必须与父类的方法名相同。
- 子类方法的参数列表必须与父类方法的参数列表相同。返回值类型可以相同也可以不同,如果不同,子类的返回值必须为父类的子类。
- 子类方法的访问修饰符限制一定要比父类方法的访问修饰符大
- 子类方法抛出的异常必须和父类方法抛出的异常相同或者是父类抛出异常的子类型异常。
- 如果一个方法不能被继承那么则不能重写,比如父类的private方法
- 不能重写被标识为final的方法。
- 静态方法不能被重写。
多态
- 即同一方法可以根据发送对象的不同而采取多种不同的行为方式。
- 一个对象的实际类型是确定的,但是可以指向对象的引用的类型有很多(父类,有关系的类)。
- 多态存在的条件
- 有继承关系
- 子类重写父类方法
- 福累哦引用指向子类对象
- 注意: 多态是方法的多态,属性没有多态性。
- instanceof (类型转换) 引用类型