Java_对象多态的应用

先编写一个Animal类和一个Food类,在里面用私有属性对名字进行封装,给他set和get方法,给他构造器。分别写Cat和Dog类继承Animal类,再分别写Fish和Bone类继承Food类。

再编写一个主人类Master类,在主人类中给属性名,和构造器,同时编写方法feed(),其中这个feed()方法就会将对象的多态体现出来。最后编写测试类Test。直接上代码

动物类,狗类和猫类

public class Animal {
    private String name;

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
public class Dog extends Animal{
    public Dog(String name) {
        super(name);
    }
}
public class Cat extends Animal{
    public Cat(String name) {
        super(name);
    }
}

食物类,鱼和骨头

public class Food {
    private String name;

    public Food(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
public class Fish extends Food{
    public Fish(String name) {
        super(name);
    }
}
public class Bone extends Food{
    public Bone(String name) {
        super(name);
    }
}

主人类Master和测试类Test

public class Test {
    public static void main(String[] args) {
        Master ming = new Master("小明");
        Cat cat = new Cat("小猫");
        Fish fish = new Fish("鱼肉");
        ming.feed(cat,fish);

        Dog huang = new Dog("小黄");
        Bone bone = new Bone("骨头");
        ming.feed(huang,bone);
    }
}
public class Master {
    String name;

    public Master(String name) {
        this.name = name;
    }
    //这里体现了对象多态,因为new的对象都是Animal的子类和Food的子类,而我们在Test类中调用时我们 
    //只需要调用一个方法就能实现两个业务逻辑,不需要写两个方法分别完成。
    public void feed(Animal animal,Food food){
        System.out.println("主人"+name+"给"+animal.getName()+"吃"+food.getName());
    }
}

运行结果如下

主人小明给小猫吃鱼肉
主人小明给小黄吃骨头

 总结:

多态的前提是:两个对象(类)存在继承关系。多态首先是建立在继承的基础上的,先有继承才能有多态。多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,即父类同一个方法,在继承的子类中表现出不同的形式。多态成立的另一个条件是在创建子类时候必须使用父类new子类的方式。(即父类的应用指向子类的对象,俗称上转型)。

猜你喜欢

转载自blog.csdn.net/ming2060/article/details/127766918