多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
多态有两种表现形式:重载和覆盖
首先说重载(overload),是发生在同一类中。与什么父类子类、继承毫无关系。
标识一个函数除了函数名外,还有函数的参数(个数和类型)。也就是说,一个类中可以有两个或更多的函数,叫同一个名字而他们的参数不同。
他们之间毫无关系,是不同的函数,只是可能他们的功能类似,所以才命名一样,增加可读性,仅此而已!
再说覆盖(override),是发生在子类中!也就是说必须有继承的情况下才有覆盖发生。
我们知道继承一个类,也就有了父类了全部方法,如果你感到哪个方法不爽,功能要变,那就把那个函数在子类中重新实现一遍。
这样再调用这个方法的时候,就是执行子类中的过程了。父类中的函数就被覆盖了。(当然,覆盖的时候函数名和参数要和父类中完全一样,不然你的方法对父类中的方法就不起任何作用,因为两者是两个函数,毫不关系
----------------------------------------
多态是和继承相反的概念 多态是和继承相反的概念
多态是父类调子类的实现,继承是子类调父类的实现,由于多态时不知道会被哪个子类继承,所以定义的东西都是虚函数,当你执行这个虚函数时,首先找到该虚函数代表的实体子类,并执行子类中的相关代码
----------------------------------------------------------------
多态也是java的一个很重要的部分,就是一个方法名可以用多次,具体根据参数的不同来分辨你调用哪个方法,通俗的解释多台就是,假如有个方法名叫:“动物的叫声” 那么,当你传递的参数是动物狗,则调用狗叫声,是猫,则调用猫叫声,这就是多态。
------------------------------------------------------------------------------------------------
本文面向Java初学者,我们在教材上经常会看到Java是多态的,可是一般的教科书只停留在理论上,很少有实际操作。现在把多态个概念用代码简单描述一下,由于本人水平有限,所以难免有不足之处。
首先我们有这样几个类,电脑,个人电脑,笔记本电脑。
java 代码
- class Computer{
- public void turnOn(){
- }
- }
现在有了电脑这个类,那么个人PC,笔记本都是继承他。
java 代码