面向对象三原理:
第一:多态
多态是java的一个很重要的部分,就是一个方法名多次使用(不同与简单的方法多次调用),具体根据参数的不同来分辨你调用哪个方法,通俗的解释多态就是,假如有个方法名叫:“动物的叫声”
那么,当你传递的参数是动物狗,则调用狗叫声,是猫,则调用猫叫声,这就是多态。这个描述应该是最好理解的了
传递的参数是对象,传进去那个对象,就执行对象的响应的功能。这个功能根据那个方法确定,但是效果却不同。
也就是指允许不同类的对象对同一消息作出响应。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
多态有两种表现形式:重载和覆盖
1.首先说重载(overload)
要求发生在同一类中。
在以前的学习中我们知道,标识一个函数除了函数名外,还有函数的参数(个数和类型)。也就是说存在这样的情况:(一个类中)可以有两个或更多的函数,叫同一个名字而他们的参数不同。
根据函数的定义(相同的1.函数名和相同的2.参数列表和相同的3.返回值类型才表明函数是相同的)他们是不同的函数,只是可能他们的功能类似,所以才命名一样,增加可读性
2、覆盖(override),必须有继承的情况下才有覆盖发生,覆盖的执行者是子类。
当一个类(我们叫他子类)继承了另一个类(我们叫他父类)之后,他就具有了父类的全部方法。如果只是单纯的继承,那我们其实是在复制一个一个的父类,这是没有意义的。所以子类继承父类后,必须重写父类的方法。方法在父类中可能只是一个雏形,一个框架,真正在功能实现中大显身手的是子类重写后的方法,当我们调用这样的方法的时候,就是在执行子类的过程,父类的方法就被覆盖了。
注意:覆盖的时候函数名和参数要和父类中完全一样,不然你的方法对父类中的方法就不起任何作用,因为两者是两个函数,毫无关系。 |