java。代码目的输出有误

JAVA。如何对输出的结果进行转换?
代码如图所示,此代码输出为

------家里养了一些宠物,它们分别是-----
step1.Dog@2a139a55
step1.Cat@15db9742
------每当我回家,它们总是在门口列队欢迎-----
step1.Dog@2a139a55
step1.Cat@15db9742

请问要如何修改,才能输出达到一下效果?

------家里养了一些宠物,它们分别是-----
哈士奇
波斯猫
------每当我回家,它们总是在门口列队欢迎-----
哈士奇热情地扑到我身上
波斯猫高冷地从我身边走过

package step1;

class Animal {
    String name;
    
    Animal(String name) {
        this.name = name;
    }
    
    String getName() {
        return this.name;
    }

    void welcome() {
        System.out.println("欢迎回家");
    }
}

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

    void welcome() {
        System.out.println(name + "高冷地从我身边走过");
    }
}

class Dog extends Animal {
    Dog(String name) {
        super(name);
    }
    
    void welcome() {
        System.out.println(name + "热情地扑到我身上");
    }
}

public class JavaDemo {
    
    public static void main(String[] args) {
        
        // 家里养的宠物们
        Animal[] pets = new Animal[] { new Dog("哈士奇"), new Cat("波斯猫") };

        System.out.println("------家里养了一些宠物,它们分别是-----");
        for(int i = 0; i < pets.length; i++) {
            System.out.println(pets[i]);
        }
        
        System.out.println("------每当我回家,它们总是在门口列队欢迎-----");
        for(Animal pet : pets) {
            System.out.println(pet);
        }
    }
}

img


改了main方法里面的代码

    public static void main(String[] args) {

        // 家里养的宠物们
        Animal[] pets = new Animal[] { new Dog("哈士奇"), new Cat("波斯猫") };

        System.out.println("------家里养了一些宠物,它们分别是-----");
        for(int i = 0; i < pets.length; i++) {
            System.out.println(pets[i].name);
        }

        System.out.println("------每当我回家,它们总是在门口列队欢迎-----");
        for(Animal pet : pets) {
            pet.welcome();
        }
    }