随笔 - 299  文章 - 0  评论 - 0  阅读 - 6322 

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

继承,实现
方法重写
父类引用指向子类对象
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   杨申龙  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示