面向对象-多态

  • 马戏团案例:
  • 1.动物们都有名字、性别、都会表演节目
  • 2.马戏团能表演节目给大家看,上台的是猴子就表演单车。

父类-动物类:

public class Animal {
    private  String  name;
    private  String  gender;

    public Animal(String name, String gender) {
        this.name = name;
        this.gender = gender;
    }

    /**
     * 父类方法,play可以改成抽象方法。
     */
    public void play(){
        System.out.println("我在表演");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}

子类-猴子类:

public class Money extends Animal {
    /**
     *调用父类的属性
     */
    public  Money(String name, String gender) {
        super(name, gender);
    }
    /**
     * 子类重写父类的方法
     */
    @Override
    public void play() {
        System.out.println("我是猴子啊,我在骑单车");
    }
}

马戏团类:

/**
 * show:显示哪个动物表演
 * animal.play: 父类的方法。
 */
public class Circus {
    /**
     *表演节目,就看上台的是哪个动物
     *父类引用指向子类对象
     */
    public void  show(Animal animal){
        animal.play();
    }
}

测试类:

public class Text {
    public static void main(String[] args){
       //多态
        Animal money=new Money("猴子","雄性");
        Circus circus=new Circus();
        /**
         * 这句话显示是哪个动物在表演。
         * 猴子在表演。
         */
        circus.show(money);
        /**
         * animal只能调用猴子重写的父类方法,不能调用子类独有的方法。
         * 调用猴子的方法。
         */
        money.play();
    }
}

你可能感兴趣的:(第一阶段,java)