Java中函数入参是父类

在Java中,函数的参数可以是父类类型,这意味着我们可以将子类的实例作为参数传递给函数。这种特性称为多态,是面向对象编程中的重要概念之一。

多态的概念

多态是面向对象编程的一个重要特性,它允许我们使用父类类型的引用来引用子类对象。这样做的好处是可以提高代码的灵活性和可复用性。

示例代码

假设我们有一个简单的动物类Animal,以及它的两个子类DogCat,我们可以定义一个函数printSound,它接受一个Animal类型的参数,并输出该动物的叫声。

// Animal类
public class Animal {
    public void makeSound() {
        System.out.println("Animal is making a sound");
    }
}

// Dog类
public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Dog is barking");
    }
}

// Cat类
public class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Cat is meowing");
    }

    // printSound函数
    public void printSound(Animal animal) {
        animal.makeSound();
    }

    // 测试代码
    public static void main(String[] args) {
        Cat cat = new Cat();
        Dog dog = new Dog();

        Cat.printSound(cat);
        Cat.printSound(dog);
    }
}

在上面的示例中,我们定义了一个函数printSound,它接受一个Animal类型的参数。我们可以传递DogCat的实例给这个函数,并且函数将根据实际类型调用正确的makeSound方法。

类图

classDiagram
    Animal <|-- Dog
    Animal <|-- Cat

在上面的类图中,DogCat类都是Animal类的子类。

甘特图

gantt
    title 函数入参是父类示例
    section 示例代码
    定义类模型: done, 2021-10-01, 3d
    编写printSound函数: done, after 定义类模型, 2d
    编写测试代码: done, after 编写printSound函数, 1d

在上面的甘特图中,展示了示例代码的编写进度。

结论

在Java中,函数的参数可以是父类类型,这为我们编写更加灵活和可复用的代码提供了便利。通过多态特性,我们可以在运行时动态确定调用方法的实陋类型,从而实现功能的扩展和定制。因此,在编写Java代码时,充分利用函数入参是父类这一特性,可以使代码更简洁、易维护,并且更具有扩展性。