⬅ Previous Topic
Java KeywordsNext Topic ⮕
Java assert Keyword⬅ Previous Topic
Java KeywordsNext Topic ⮕
Java assert Keywordabstract
Keyword in JavaThe abstract
keyword in Java is used to define abstract classes and abstract methods. These are essential components of Java's powerful object-oriented programming capabilities. If you're building a system where certain classes shouldn't be instantiated directly and must be extended, this keyword is your go-to tool.
An abstract class is a class that cannot be instantiated. It's designed to be a blueprint for other classes. You can think of it as an incomplete class that other classes are expected to complete by extending it.
abstract class Animal {
// Fields and methods
}
abstract class Animal {
abstract void makeSound(); // abstract method
void breathe() {
System.out.println("Breathing...");
}
}
class Dog extends Animal {
void makeSound() {
System.out.println("Woof Woof!");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.makeSound();
dog.breathe();
}
}
Woof Woof!
Breathing...
makeSound()
is an abstract method, meaning it has no body in the Animal
class.Dog
are required to provide an implementation for the abstract method.breathe()
is a regular method and can be inherited as-is.Abstract classes help you define a contract for subclasses. They are useful when you want multiple classes to share a common method signature but implement it differently.
An abstract method is a method declared without a body, using the abstract
keyword. It must be implemented by all non-abstract subclasses.
abstract returnType methodName();
Abstract classes can have constructors, and they are invoked when a subclass is instantiated.
abstract class Shape {
Shape() {
System.out.println("Shape constructor called");
}
abstract void draw();
}
class Circle extends Shape {
Circle() {
System.out.println("Circle constructor called");
}
void draw() {
System.out.println("Drawing Circle");
}
}
public class Demo {
public static void main(String[] args) {
Shape s = new Circle();
s.draw();
}
}
Shape constructor called
Circle constructor called
Drawing Circle
abstract
Abstract Class | Interface |
---|---|
Can have method bodies | All methods are abstract by default (until Java 8+) |
Can have constructors | Cannot have constructors |
Supports access modifiers | Members are public by default |
Can extend only one abstract class | Can implement multiple interfaces |
Imagine you're building a payment system with different modes: credit card, UPI, PayPal. You could use an abstract class Payment
with an abstract method process()
. Each mode would implement this method in its own way.
abstract class Payment {
abstract void process();
}
class CreditCardPayment extends Payment {
void process() {
System.out.println("Processing credit card payment");
}
}
class UpiPayment extends Payment {
void process() {
System.out.println("Processing UPI payment");
}
}
⬅ Previous Topic
Java KeywordsNext Topic ⮕
Java assert KeywordYou can support this website with a contribution of your choice.
When making a contribution, mention your name, and programguru.org in the message. Your name shall be displayed in the sponsors list.