Java 多态

多态是面向对象的三大特性之一。

什么是多态?

  对象在运行中的多种形态

 

多态大致可以分为两类:

  (1)方法的重载与重写

  (2)对象的多态性

例如:

  //用父类的引用指向子类的对象(用大的类型去接受小的类型、向上转型、自动转换)

  Human h = New Man();

 

多态性的小结:

  (1)方法的重载和重写就是方法的多态性表现

  (2)多个子类就是父类中的多种形态

  (3)父类引用可以指向子类对象,自动转换

  (4)子类对象指向父类对象需要强制转换

  (5)在实际开发中尽量使父类引用(便于扩展)

public class TestDuotai {
    public static void main(String[] args) {
        //使用父类引用指向子类对象
        Chicken hc = new HomeChicken();
        hc.eat();
        
        Chicken wc = new WildChicken();
        wc.eat();        
        
    }
    //使用对象的多态,面向抽象编程(面向接口编程)
    public static void action(Chicken cc) {
        cc.eat();
        if(cc instanceof PetChicken) {// instanceof,判断对象所属类别
            PetChicken pc = (PetChicken) cc; //大的类型,转换成小的类型,强制转换
             pc.dance();
        }
    }
}

abstract class Chicken{
    String name;
    int age;
    public Chicken() {
        
    }
    public Chicken(String name) {
        this.name = name;
    }
    public void eat() {
        System.out.println("想吃饭");
    }
}

class HomeChicken extends Chicken{
    public HomeChicken(){
        
    }
    public void eat() {
        System.out.println("想吃小米");
    }
    
}

class WildChicken extends Chicken{
    public WildChicken(){
        
    }
    public void eat() {
        System.out.println("想吃小虫子");
    }
    
}

class PetChicken extends Chicken{
    public PetChicken(){
        
    }
    public void dance() {
        System.out.println("宠物鸡会唱跳、rap、篮球哦");
    }
}

 

posted @ 2022-05-15 22:08  藤原豆腐渣渣  阅读(24)  评论(0编辑  收藏  举报