1.1多态的定义 多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口,使用不同的实例而执行不同操作。 多态性是对象多种表现形式的体现。 1.2多态的优点
方式一:重写: 这个内容已经在上一章节详细讲过,就不再阐述,详细可访问:Java 重写(Override)与重载(Overload)。 方式二:接口
方式三:抽象类和抽象方法 https://blog.csdn.net/weixin_45187434/article/details/106320376
向上转型:多态本身是子类类型向父类类型向上转换的过程,其中,这个过程是默认的。你可以把这个过程理解为基本类型的小类型转大类型自动转换,不需要强制转换。 当父类引用指向一个子类对象时,便是向上转型。 向上转型格式:
父类类型 变量名 = new 子类类型(); 如:Father f= new Son();
向下转型:父类类型向子类类型向下转换的过程,这个过程是强制的。同样可以把这个过程理解为基本类型的自动转换,大类型转小类型需要强制转换。一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强制类型转换的格式,向下转使用格式:
Father father = new Son(); 子类类型 变量名 = (子类类型) 父类变量名; 如:Son s =(Son) father;
package Polymorphic;
//爷爷类
class Ye {
public String show(Sun obj) {
return ("Ye and Sun");
}
public String show(Ye obj) {
return ("Ye and Ye");
}
}
//爸爸类
class Fu extends Ye {
public String show(Fu obj) {
return ("Fu and Fu");
}
public String show(Ye obj) {
return ("Fu and Ye");
}
}
//儿子类
class Zi extends Fu {
}
//孙子类
class Sun extends Fu {
}
public class PolymorphicTest {
public static void main(String[] args) {
Ye y = new Ye();
Ye y2 = new Fu(); //向上
Fu f = new Fu();
Zi z = new Zi();
Sun s = new Sun();
System.out.println("第一题 " + y.show(f));
System.out.println("第二题 " + y.show(z));
System.out.println("第三题 " + y.show(s));
System.out.println("第四题 " + y2.show(f));
System.out.println("第五题 " + y2.show(z));
System.out.println("第六题 " + y2.show(s));
System.out.println("第七题 " + f.show(f));
System.out.println("第八题 " + f.show(z));
System.out.println("第九题 " + f.show(s));
}
}
第一题 Ye and Ye 第二题 Ye and Ye 第三题 Ye and Sun 第四题 Fu and Ye 第五题 Fu and Ye 第六题 Ye and Sun 第七题 Fu and Fu 第八题 Fu and Fu 第九题 Ye and Sun