Abstract Classes
Abstract Classes An abstract class in Java is a class that cannot be instantiated on its own and must be subclassed by another class. It is used to provide a common interface for other classes to implement. An abstract class may contain abstract methods (without implementation) and concrete methods (with implementation). Key Points: An abstract class can have abstract methods (methods without body) and concrete methods (methods with body). A subclass that extends an abstract class must provide concrete implementations for all abstract methods. An abstract class can have fields, constructors, and methods just like regular classes. Abstract methods in an abstract class must be implemented by the subclass unless the subclass is also abstract. Example: abstract class Animal { // Abstract method (does not have a body) abstract void sound(); // Regular method void sleep() { System.out.println("Sleeping..."); } } class Dog extends Animal { // Implementing the abstract method void sound() { System.out.println("Dog barks"); } } public class Main { public static void main(String[] args) { // Animal animal = new Animal(); // This will give an error because Animal is abstract Dog dog = new Dog(); dog.sound(); // Output: Dog barks dog.sleep(); // Output: Sleeping... } } Example with multiple abstract methods: abstract class Shape { // Abstract method (no body) abstract void draw(); abstract double area(); } class Circle extends Shape { double radius; Circle(double radius) { this.radius = radius; } // Implementing abstract methods void draw() { System.out.println("Drawing a circle"); } double area() { return Math.PI * radius * radius; } } public class Main { public static void main(String[] args) { Shape shape = new Circle(5.0); shape.draw(); // Output: Drawing a circle System.out.println("Area: " + shape.area()); // Output: Area: 78.53981633974483 } } 🔗 Related Notes Access Modifiers Method Overloading Static Keyword Inheritance Types of Inheritance Method Overriding super to Access Superclass Members