Animal Sounds

Lab Java Beginner 10 points

Create a base class Animal(String name) with String sound() returning ... and describe() returning NAME says SOUND. Subclasses Dog and Cat override sound(). Read lines type name and print each description.

Input

n, then n lines (dog, cat or animal).

Output

n lines.

Example

Input

3
dog Rex
cat Tom
animal Blob

Output

Rex says woof
Tom says meow
Blob says ...
Sample input available Sample output available
Editor
Java

Hints

super(name) calls the parent constructor.

describe() in Animal calls whichever sound() the object really has.

Solution explanation

Overriding lets subclasses change one piece of behaviour while reusing the rest.

Show solution
import java.util.Scanner;

class Animal {
    protected final String name;

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

    String sound() {
        return "...";
    }

    String describe() {
        return name + " says " + sound();
    }
}

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

    @Override
    String sound() {
        return "woof";
    }
}

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

    @Override
    String sound() {
        return "meow";
    }
}

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            String type = sc.next();
            String name = sc.next();
            Animal a = type.equals("dog") ? new Dog(name) : type.equals("cat") ? new Cat(name) : new Animal(name);
            System.out.println(a.describe());
        }
    }
}
Output
Answer
HOME LEARN COMMUNITY DASHBOARD