java中的多态

作者:飞特族 / 公众号:sunfreeter 发布时间:2019-11-03

点击上方“飞特族”订阅哦!多态性被认为是面向对象编程的重要特征之一,多态简言之就是消息以多种形式显示的能力(是不是太抽象了?别急,看下面)。多态的现实生活例子:一个人同时可以有不同的特征。比如男人同时是父亲,丈夫,雇员。因此,同一个人在不同情况下拥有不同的行为。这称为多态性。在Java中,多态性主要分为两种:编译时间多态性运行时多态性1. 编译时间多态它也称为静态多态。这种类型的多态性是通过函数重载或运算符重载来实现的。1.1 方法重载当有多个具有相同名称但参数不同的函数,这些函数被称为重载。可以通过更改参数数量和/或更改参数类型来重载函数。示例:使用不同类型的参数
classMultiplyFun{staticintMultiply(inta,intb){returna*b;}staticintMultiply(inta,intb,intc){returna*b*c;}}classMain{publicstaticvoidmain(String[]args){System.out.println(MultiplyFun.Multiply(2,4));System.out.println(MultiplyFun.Multiply(2,7,3));}}输出:842示例:通过使用不同数量的参数
classMultiplyFun{staticintMultiply(inta,intb){returna*b;}staticdoubleMultiply(doublea,doubleb){returna*b;}}classMain{publicstaticvoidmain(String[]args){System.out.println(MultiplyFun.Multiply(2,4));System.out.println(MultiplyFun.Multiply(5.5,6.3));}}输出:834.651.2运算符重载Java还提供重载运算符的选项。例如,我们可以使字符串类的运算符('+')连接两个字符串。我们知道这是加法运算符,其任务是添加两个操作数。因此,当放置在整数操作数之间时,单个运算符“+”将相加它们,但放置在字符串操作数之间时,将它们连接起来。在java中,只有“+”运算符可以重载:整数相加连接字符串示例:
classOperatorOVERDDN{//连接字符串voidoperator(Stringstr1,Stringstr2){Strings=str1+str2;System.out.println("ConcatinatedString-"+s);}//整数相加voidoperator(inta,intb){intc=a+b;System.out.println("Sum="+c);}}classMain{publicstaticvoidmain(String[]args){OperatorOVERDDNobj=newOperatorOVERDDN();obj.operator(2,3);obj.operator("joe","now");}}输出:Sum =5Concatinated String - joenow2. 运行时多态:
存在的三要素
继承
重写
父类引用指向子类对象它也称为动态方法调度。这是一个在运行时解析对重写方法的函数调用的过程。这种类型的多态性是通过Method Overriding实现的。另一方面,当派生类具有基类的一个成员方法的定义时,会发生方法重写。这个基函数也就被覆盖了。例:
classParent{voidPrint(){System.out.println("parentclass");}}classsubclass1extendsParent{voidPrint(){System.out.println("subclass1");}}classsubclass2extendsParent{voidPrint(){System.out.println("subclass2");}}classTestPolymorphism3{publicstaticvoidmain(String[]args){Parenta;a=newsubclass1();a.Print();a=newsubclass2();a.Print();}}输出:subclass1subclass2
总结下java中的多态就是重载、重写(超类、接口)、外加一个"+"!欢迎交流
族长
你如果想 屯干货 | 享信息 | 聊生活
请长按识别二维码关注即可

关注飞特族微信公众号,获取更多图文精彩内容


其他栏目