面向对象-主线二:面向对象的三大特征:封装、继承、多态
封装与隐藏
- 程序设计追求的高内聚、低耦合
高内聚:类的内部数据操作细节自己完成,不允许外部干涉
低耦合:仅对外暴露少量的方法用于使用。 - 封装性的体现
私有的变量提供公有的get\set方法。
仅内部使用的私有方法
单例模式私有的构造方法 - 权限修饰符
只能修饰成员变量、构造器、方法、内部类
类只能用public和缺省修饰 | 作用域 | 当前类 | 同一package | 子孙类 | 其他package | | —- | —- | —- | —- | —- | | public | √ | √ | √ | √ | | protected | √ | √ | √ | | | friendly | √ | √ | | | | private | √ | | | |
继承
- 继承的好处
减少了代码的冗余,提高了代码的复用性。
便于功能的扩展
为多态提供基础 - 继承的格式
会继承所有的属性和方法
但是父类中的私有属性不能直接使用 继承的规定
一个子类只能继承一个父类,不可以多继承
一个父类可以由多个子类继承多态
理解多态性:可以理解为一个事物的多种形态
- 何为多态性:
- 对象的多态性:父类的引用指向子类的对象
- 多态的使用:虚拟方法调用
- 有了多态性后,我们在编译的时候只能调用父类的方法,但是运行时是调用的子类中重写的方法。
- 多态使用的前提:
- 继承
- 重写
- 对象的多态性只适用于方法不适用与属性
静态绑定和动态绑定
- 静态绑定,指方法间的重载,重载可以是父类和子类或者子类内部之间同名,不同参数列表之间的关系,他们的调用在编译期间就已经确定,被称之为:早绑定或者静态绑定
- 动态绑定,也就是多态性,指的是在满足重写、继承、父类引用指向之类对象之后在编译期间无法确定具体调用的方法,等到运行时,解释运行器才会确定具体运行的方法,这个称为:晚绑定或者动态绑定。
向上转型和向下转型
对象的多态性是向上转型即父类引用指向子类对象。
- 向下转型是指父类的引用强制类型转化为子类的类型,格式:A a = (A) b; 且父类引用中存的实际类型为A(使用instanceof)。