Abstract Classes & Interfaces
Abstract classes and interfaces define contracts that other classes must follow. Abstract classes can have both abstract and concrete methods. Interfaces define only method signatures (prior to Java 8). They're essential for designing flexible, modular code.
45 min•By Priygop Team•Last updated: Feb 2026
Abstract Classes & Interfaces
Example
// Abstract class — cannot be instantiated directly
abstract class Animal {
String name;
Animal(String name) {
this.name = name;
}
// Abstract method — subclasses MUST implement
abstract String sound();
// Concrete method — shared by all subclasses
void display() {
System.out.println(name + " says: " + sound());
}
}
// interface — a contract of methods
interface Trainable {
void train(String trick);
boolean isTrainable();
}
interface Swimmable {
void swim();
}
// Implementing abstract class + interfaces
class Dog extends Animal implements Trainable, Swimmable {
Dog(String name) {
super(name);
}
@Override
String sound() { return "Woof!"; }
@Override
public void train(String trick) {
System.out.println(name + " learned: " + trick);
}
@Override
public boolean isTrainable() { return true; }
@Override
public void swim() {
System.out.println(name + " is swimming!");
}
}
class Cat extends Animal {
Cat(String name) {
super(name);
}
@Override
String sound() { return "Meow!"; }
}
public class AbstractDemo {
public static void main(String[] args) {
Dog dog = new Dog("Rex");
Cat cat = new Cat("Luna");
dog.display();
dog.train("shake");
dog.train("roll over");
dog.swim();
System.out.println("Trainable: " + dog.isTrainable());
System.out.println();
cat.display();
}
}Try It Yourself: Media Player interface
Try It Yourself: Media Player interfaceJava
Java Editor
✓ ValidTab = 2 spaces
Java|65 lines|1583 chars|✓ Valid syntax
UTF-8