多态的应用
多态的应用
多态:多种形态
多态的实现方式
1.使用父类作为方法的参数实现多态
2.使用父类作为方法的返回值实现多态
继承的多态:当这个作为参数的父类是一种普通类或者抽象类时
接口多态:当这个作为参数的父类是一个接口时 构成接口多态
多态的应用场景:某个问题需要子类除了需要重写父类的abstract的方法,还需要从父类继承变量或者重写重要的非abstract方法,就考虑abstract类
注意:父类引用指向子类实例时,可以调用子类重写父类的方法以及直接继承父类的方法,无法调用子类特有的方法父类引用指向子类实例时,可以调用子类重写父类的方法以及直接继承父类的方法,无法调用子类特有的方法
父类作为返回值代码:
public static void main(String[] args) {
//将父类作为返回值
Animal an=new Dog();
an.eat();
an.variety();
}
}
class Animal{
public void eat() {
System.out.println("吃东西");
}
//父类特有方法
public void variety(){
System.out.println("种类");
}
}
class Dog extends Animal{
@Override
public void eat() {
super.eat();
}
//子类特有方法
public void sleep(){
System.out.println("睡觉");
}
}
可以看到它无法访问子类的特有方法 这是父类作为返回值的状态
子类作为返回值代码:
public static void main(String[] args) {
//将子类作为返回值 需要进行强转
Animal a = new Dog();
Dog d=(Dog) a;
d.sleep();
d.eat();
}
}
class Animal {
public void eat() {
System.out.println("吃东西");
}
//父类特有方法
public void variety(){
System.out.println("种类");
}
}
class Dog extends Animal {
@Override
public void eat() {
super.eat();
}
//子类特有方法
public void sleep(){
System.out.println("睡觉");
}
}
可以看到它最后转换的时候 是需要先父类作为返回值 最后在进行强转
子类作为返回值可以访问子类特有方法
父类作为返回值可以访问父类特有方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本