一、多态

引言:

操作符的多态,比如+,可以作为算数运算,也可以连接字符串(类似于C++里的重载的思想)

类的多态:父类引用指向子类对象

一、操作符的多态:

  同一个操作符在不同情境下,具备不同的作用,如果+号两侧都是整型,那么+代表数字相加

  如果+号两侧,任意一个是字符串,那么+代表连接字符串

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
    }
}
View Code

二、类的多态现象

首先写一个父类

//父类
package property;
public class Item{
    String name;
    int price;
    
    public void buy(){
        System.out.println("购买");
    }
    public void effect(){
        System.out.println("物品使用后,可以有效果");
    }
}
View Code

编写两个子类,分别继承父类。

子类一:LifePoint

//子类
package property;
public class LifePoint extend Item{
    public void effect(){
        System.out.println("血瓶使用后,可以回血");
    }
}
View Code

子类二:MagicPoint

//子类
package property;
public class MagicPoint extend Item{
    public void effect(){
        System.out.println("蓝瓶使用后,可以回蓝");
    }
}
View Code

再写一个测试类进行测试

//测试类
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();
    }
}
View Code

输出了不同的结果,由此看来:多态都是同一个类型,调用同一个方法,却呈现了不同的状态

原文地址:https://www.cnblogs.com/drq1/p/8465874.html