Code

// Abstract classabstract class Animal {    protected String name;        // Constructor    public Animal(String name) {        this.name = name;    }        // Concrete method (has implementation)    public void sleep() {        System.out.println(name + " is sleeping");    }        // Abstract method (no implementation)    public abstract void makeSound();        // Abstract method    public abstract void move();}// Concrete subclassclass Dog extends Animal {    public Dog(String name) {        super(name);    }        // Must implement abstract methods    @Override    public void makeSound() {        System.out.println(name + " barks");    }        @Override    public void move() {        System.out.println(name + " runs on four legs");    }}// Another concrete subclassclass Bird extends Animal {    public Bird(String name) {        super(name);    }        @Override    public void makeSound() {        System.out.println(name + " chirps");    }        @Override    public void move() {        System.out.println(name + " flies");    }}// UsageAnimal dog = new Dog("Buddy");dog.sleep();      // Inherited concrete methoddog.makeSound();  // Overridden abstract methoddog.move();       // Overridden abstract methodAnimal bird = new Bird("Tweety");bird.sleep();    // Inherited concrete methodbird.makeSound(); // Overridden abstract methodbird.move();      // Overridden abstract method// Cannot instantiate abstract class// Animal animal = new Animal("Generic"); // Compile error

Comments

No comments yet. Be the first!