创建一个“Animal“类作为基类,以及“Dog“和“Cat“作为子类,展示继承和多态的基本应用。

在Java中,继承是面向对象编程的一个基本特性,它允许子类继承父类的属性和方法。多态则是Java中的另一个核心概念,它允许我们使用父类类型的变量来保存子类类型的对象,并且在运行时动态地选择正确的方法执行。以下是如何创建这些类以及如何展示继承和多态的基本应用。
首先,我们定义一个Animal类作为基类,它有两个属性:name和species,以及一个方法makeSound(),用于动物发声。
 

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

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

    public String getName() {
        return name;
    }

    public String getSpecies() {
        return species;
    }

    public void makeSound() {
        System.out.println(this.species + " is making a sound");
    }
}

接着,我们创建Dog和Cat类作为Animal的子类。Dog类和Cat类都覆盖了makeSound()方法,以便为狗和猫分别提供独特的声音。

public class Dog extends Animal {
    public Dog(String name, String species) {
        super(name, species);
    }

    @Override
    public void makeSound() {
        System.out.println(this.species + " is barking");
    }
}

public class Cat extends Animal {
    public Cat(String name, String species) {
        super(name, species);
    }

    @Override
    public void makeSound() {
        System.out.println(this.species + " is meowing");
    }
}

现在,我们来展示如何使用这些类来实现多态。我们创建一个Animal类型的变量animal,并将其指向一个Dog对象。然后我们调用makeSound()方法。由于我们使用的是Animal类型的变量,但实际调用的是Dog类的makeSound()方法,这就是多态的应用。
 

public class Test {
    public static void main(String[] args) {
        Animal animal;
        animal = new Dog("Rex", "Dog");
        animal.makeSound(); // 输出: Dog is barking

        animal = new Cat("Felix", "Cat");
        animal.makeSound(); // 输出: Cat is meowing
    }
}

在上面的代码中,animal变量可以保存Dog或Cat对象,这是因为Dog和Cat都是Animal的子类。当我们调用makeSound()方法时,Java运行时会根据实际的对象类型来决定调用哪个类中的方法。这就是多态的魔法——同一个方法名在不同子类中具有不同的实现。
总之,通过定义基类Animal和子类Dog、Cat,并展示如何使用这些类来调用方法,我们展示了Java中的继承和多态的基本应用。在实际开发中,这些概念是面向对象设计的核心,它们帮助我们创建灵活、可扩展和可维护的代码。
 

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值