Задача - Переопределить метод getChild в классах Cat(кот) и Dog(собака), чтобы кот порождал кота, а собака – собаку. Что происходит логически в строках последовательно : 1 - Pet pet1 = new Cat(); / создаем объект new Cat() 2 - Pet cat = pet1.getChild(); / вызываем метод getChild() 3 - return new Cat(); / создаем объект new Cat(), то есть можно было сразу написать Pet cat = new Cat() ? Что нам дает строка = pet1.getChild() ?
public class Solution {
    public static void main(String[] args) {
        Pet pet1 = new Cat();
        Pet cat = pet1.getChild();

        Pet pet2 = new Dog();
        Pet dog = pet2.getChild();
    }

    public static class Pet {
        public Pet getChild() {
            return new Pet();
        }
    }

    public static class Cat extends Pet {
public Pet getChild() {
            return new Cat();
        }
    }

    public static class Dog extends Pet {
public Pet getChild() {
            return new Dog();
        }
    }
}