多态:是指具有相同的行为,不同的体现;
多态分为静态多态和动态多态;
静态多态:在编译时,系统就能决定调用哪个方法(重载);
动态多态:重写和动态绑定;
使用动态多态和重写机制来实现多态,首先需要掌握三个基础技术概念;
1:向上转型技术(一个父类的引用变量可以指向不同的子类对象,或者说一个子对象可以被当做一个父类类型)。
2:instanceof关键字(instanceof用于判断运行时对象的真正类型)。
3:动态绑定技术(运行时根据父类引用变量所指对象的实际类型执行相应的子类方法)。
一个被重写的方法在父类中实质上是被隐藏的,除非子类在重写的方法中使用 super 关键字,否则这个被重写的方法是不会被调用的。
多态的主要作用是异构集合(乾坤袋),异构集合( 多态最常见的应用是创建一个不是同一类型,但是有共同父类的数据集合,不同对象集合称为异构集合)。
在多态中,子类可以调用父类中的所有方法。
抽象类:使用关键字adstract可以声明一个抽象类,这个关键字写在public后面。
抽象就是有点模糊的意思,还没确定好的意思。 比如我想买件衣服,我只是想买衣服而已,但还没确定是买白色的衣服还是蓝色的衣服,也还没确定是要买短袖还是长袖的衣服。 用到java上,就比方,我要定义一个方法和类。但还没确定怎么去实现它的具体一点的子方法,那我就可以用抽象类;
抽象的好处:
设计合理(如果父类的方法没有什么体现,而只是为了能让子类重写,那么就可以用抽象);
规范子类(如果你把重写的方法名写错系统是不会报错的,但是如果你的父类是抽象的,那么你没有重写父类的抽象方法系统就会自动报错,除非你的这个子类也是一个抽象的子类);