Understanding Java Abstract Classes, Final Keyword, Static Members, and Interfaces
Abstract Classes in Java
Abstract classes serve as base classes that cannot be instantiated. They often contain abstract methods that must be implemented by subclasses.
// Abstract base class
public abstract class Creature {
// Abstract method requiring implementation
public abstract void consume();
}
// Concrete subclass
public class Feline extends Creature {
@Override
public void consume() {
System.out.println("Cat eats fish");
}
}
// Another concrete subclass
public class Canine extends Creature {
@Override
public void consume() {
System.out.println("Dog eats meat");
}
}
The Final Keyword
The final modifier prevents modification of classes, methods, or variables.
Final Classes
public final class ImmutableClass {
// Cannot be extended
}
Final Methods
public class Parent {
public final void lockedMethod() {
// Cannot be overridden
}
}
Final Variables
public class Constants {
// Final instance variable
private final int MAX_VALUE = 100;
// Final static variable
public static final double PI = 3.14159;
}
Static Members
Static members belong to the class rather than insatnces.
Static Fields
public class Employee {
private String name;
public static String company = "TechCorp";
public void displayInfo() {
System.out.println(name + " works at " + company);
}
}
Static Methods
public class MathUtils {
public static int square(int num) {
return num * num;
}
}
Interfaces in Java
Interfacse define contracts that implementing classes must follow.
Basic Interface
public interface Connectable {
void establishConnection();
void terminateConnection();
}
// Concrete implementation
public class Printer implements Connectable {
@Override
public void establishConnection() {
System.out.println("Printer connected");
}
@Override
public void terminateConnection() {
System.out.println("Printer disconnected");
}
}
Interface Features
public interface NetworkDevice {
// Constant field
int MAX_CONNECTIONS = 8;
// Abstract method
void transmitData();
// Default method (Java 8+)
default void logStatus() {
System.out.println("Device operational");
}
// Static method (Java 8+)
static void displayProtocol() {
System.out.println("TCP/IP");
}
}