多态
多态是继封装、继承之后,面向对象的第三大特性。
是指同一行为,具有多个不同表现形式。
多态的前提

继承,实现
方法重写
父类引用指向子类对象
public abstract class food {
public abstract void eat();
}
class Race extends food {
public void eat() {
System.out.println("吃饭");
}
}
class cai extends food {
public void eat() {
System.out.println("吃菜");
}
}
public class Test {
public static void main(String[] args) {
// 多态形式,创建对象
Race c = new Race();
cai d = new cai();
// 调用showCatEat
showRaceEat(c); /
/ 调用showDogEat
showcaiEat(d);
/*
以上两个方法, 均可以被showAnimalEat(Animal a)方法所替代 而执行效果一致
*/
showfoodEat(c);
showfoodEat(d);
}
public static void showRaceEat (Race c){
c.eat(); }
public static void showcaiEat (cai d){
d.eat(); }
public static void showfoodEat (food a){
a.eat();
}
}


当父类引用指向一个子类对象时,便是向上转型。

向下转型
父类类型向子类类型向下转换的过程,这个过程是强制的。
一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强制类型转换的格式,便是向下转型。
格式
子类类型 变量名 = (子类类型) 父类变量名;
原因
想要调用子 类特有的方法,必须做向下转型。
转型过程中最好使用instanceof方法
变量名 instanceof 数据类型 如果变量属于该数据类型,返回true。 如果变量不属于该数据类型,返回false

posted on 2023-11-08 19:33  杨申龙  阅读(8)  评论(0)    收藏  举报