引言:
操作符的多态,比如+,可以作为算数运算,也可以连接字符串(类似于C++里的重载的思想)
类的多态:父类引用指向子类对象
一、操作符的多态:
同一个操作符在不同情境下,具备不同的作用,如果+号两侧都是整型,那么+代表数字相加
如果+号两侧,任意一个是字符串,那么+代表连接字符串
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package character; public class Hero{ public String name; protected float hp; public static void main(String[] args) { int i=5; int j=6; int k=i+j;////如果+号两侧都是整型,那么+代表 数字相加 System.out.println(k);//11 int a=5; String b="6"; String c=a+b;//如果+号两侧,任意一个是字符串,那么+代表字符串连接 System.out.println(c);//56 } }
二、类的多态现象
首先写一个父类
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//父类 package property; public class Item{ String name; int price; public void buy(){ System.out.println("购买"); } public void effect(){ System.out.println("物品使用后,可以有效果"); } }
编写两个子类,分别继承父类。
子类一:LifePoint
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//子类 package property; public class LifePoint extend Item{ public void effect(){ System.out.println("血瓶使用后,可以回血"); } }
子类二:MagicPoint
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//子类 package property; public class MagicPoint extend Item{ public void effect(){ System.out.println("蓝瓶使用后,可以回蓝"); } }
再写一个测试类进行测试
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//测试类 package property; public class Test{ public static void main(String[] args){ Item i1=new LifePoint(); Item i2=new MagicPoint(); System.out.println("i1是Item类型,执行effect打印:"); i1.effect(); System.out.println("i2是Item类型,执行effect打印:"); i2.effect(); } }
输出了不同的结果,由此看来:多态都是同一个类型,调用同一个方法,却呈现了不同的状态