多态的应用

多态的应用

多态:多种形态

多态的实现方式

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("睡觉");
}
}

可以看到它最后转换的时候 是需要先父类作为返回值 最后在进行强转

子类作为返回值可以访问子类特有方法 

父类作为返回值可以访问父类特有方法

posted @   baimingze  阅读(624)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示