多态的应用

多态的应用

多态:多种形态

多态的实现方式

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 @ 2022-06-19 15:41  baimingze  阅读(640)  评论(0)    收藏  举报