OOP and design · Topic 7 of 12
Interface vs abstract class
Definition​
An interface describes what a type can do and holds no state. An abstract class can also hold shared fields and partly finished code. A class can implement many interfaces but extend only one class.
Example code​
An abstract base class plus an interface
interface Flyable {
void fly();
default String speed() { return "slow"; } // an interface can offer a default method
}
abstract class Animal {
protected final String name; // state can live in an abstract class
Animal(String name) { this.name = name; }
abstract String sound(); // each animal must define this
void introduce() { System.out.println(name + " says " + sound()); }
}
class Bird extends Animal implements Flyable { // one class, many interfaces
Bird(String name) { super(name); }
String sound() { return "tweet"; }
public void fly() { System.out.println(name + " is flying, speed " + speed()); }
}
class Demo {
public static void main(String[] args) {
Bird bird = new Bird("Robin");
bird.introduce();
bird.fly();
}
}
// Output:
// Robin says tweet
// Robin is flying, speed slow
Finished this page? Track your progress (saved only in your browser).