多态与抽象
多态
- 概念:相同的行为不同的实现。
- 多态的分类:
静态多态: 编译期既已知方法执行效果(方法的重载)。
动态多态: 编译期未知,运行期根据绑定对象的不同,有不同的效果(动态绑定技术和方法重写)。 转型技术:当操作符两端的数据类型不一致的时候,就会发生转型。
- 当大的数据往小的空间存放,必须进行强制转换。(向下转型)
- 当小的数据放入大的空间的时候,自动类型转换。(向上转型)
引用数据同样存在转型技术(两个类必须存在继承关系)。
1.向下转型—-强制类型转换(编译可能通过,但运行起来有风险,必须保证运行的最终效果是父类引用指向子类对象或者本类应用指向本类对象)- 当父类引用指向子类对象时,只能调用到来自父类的属性和行为(受访问修饰符限制)。
当本类引用指向本类对象的时候,只能看到本类的所有属性和行为(受访问修饰符限制)。
2.向上转型—自动类型转换。
- 父类的引用可以指向子类的对象。
- *instanceof关键字*。
- 多态的主要应用:
- 多态参数:equals()方法
- 异构集合:解决只能存放相同数据类型的问题。ObjectArray如果存放基本数据类型,指向的是一个基本类型的封装。
抽象
- 关键字:abstract。
- 特点:
- 只有方法的声明,没有方法的实现;
- 当一个类只要有一个抽象方法,这个类就是抽象类。(类名前加关键字,抽象类不能产生对象)
- 子类继承抽象类以后必须实现父类所有的抽象方法,否则自己也是抽象类。
- 抽象类的构造器是为了帮助子类产生对象中的父类部分。
- 抽象类可以具备非抽象的方法。
- 抽象的好处:帮助实现多态。