- 1Java Exceptions
- 2Java Keywords
- 3Java abstract Keyword
- 4Java assert Keyword
- 5Java boolean Keyword
- 6Java break Keyword
- 7Java byte Keyword
- 8Java case Keyword
- 9Java catch Keyword
- 10Java char Keyword
- 11Java class Keyword
- 12Java const Keyword
- 13Java continue Keyword
- 14Java default Keyword
- 15Java do Keyword
- 16Java double Keyword
- 17Java else Keyword
- 18Java enum Keyword
- 19Java extends Keyword
- 20Java final Keyword
- 21Java finally Keyword
- 22Java float Keyword
- 23Java for Keyword
- 24Java goto Keyword
- 25Java if Keyword
- 26Java implements Keyword
- 27Java import Keyword
- 28Java instanceof Keyword
- 29Java int Keyword
- 30Java interface Keyword
- 31Java long Keyword
- 32Java native Keyword
- 33Java new Keyword
- 34Java null Keyword
- 35Java package Keyword
- 36Java private Keyword
- 37Java protected Keyword
- 38Java public Keyword
- 39Java return Keyword
- 40Java short Keyword
- 41Java static Keyword
- 42Java strictfp Keyword
- 43Java super Keyword
- 44Java switch Keyword
- 45Java synchronized Keyword
- 46Java this Keyword
- 47Java transient Keyword
- 48Java try Keyword
- 49Java void Keyword
- 50Java volatile Keyword
- 51Java while Keyword
- 52Java String Methods - Syntax and Description
- 53Java String
charAt()
method - 54Java String
codePointAt()
method - 55Java String
codePointBefore()
method - 56Java String
codePointCount()
method - 57Java String
compareTo()
method - 58Java String
compareToIgnoreCase()
method - 59Java String
concat()
method - 60Java String
contains()
method - 61Java String
contentEquals()
method - 62Java String
copyValueOf()
method - 63Java String
endsWith()
method - 64Java String
equals()
method - 65Java String
equalsIgnoreCase()
method - 66Java String
format()
method - 67Java String
getBytes()
method - 68Java String
getChars()
method - 69Java String
hashCode()
method - 70Java String
indexOf()
method - 71Java String
intern()
method - 72Java String
isEmpty()
method - 73Java String
join()
method - 74Java String
lastIndexOf()
method - 75Java String
length()
method - 76Java String
matches()
method - 77Java String
offsetByCodePoints()
method - 78Java String
regionMatches()
method - 79Java String
replace()
method - 80Java String
replaceAll()
method - 81Java String
replaceFirst()
method - 82Java String
split()
method - 83Java String
startsWith()
method - 84Java String
subSequence()
method - 85Java String
substring()
method - 86Java String
toCharArray()
method - 87Java String
toLowerCase()
method - 88Java String
toString()
method - 89Java String
toUpperCase()
method - 90Java String
trim()
method - 91Java String
valueOf()
method - 92Java ArrayList Methods - Complete Reference with Syntax and Description
- 93Java LinkedList Methods - Complete Reference with Syntax and Description
- 94Java HashMap Methods - Syntax and Descriptions
Java abstract Keyword
Usage and Examples
abstract
Keyword in Java
The 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.
What is an Abstract Class?
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.
Syntax
abstract class Animal {
// Fields and methods
}
Example
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...
Key Takeaways from the Example
makeSound()
is an abstract method, meaning it has no body in theAnimal
class.- Subclasses like
Dog
are required to provide an implementation for the abstract method. breathe()
is a regular method and can be inherited as-is.
Why Use Abstract Classes?
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.
What is an Abstract Method?
An abstract method is a method declared without a body, using the abstract
keyword. It must be implemented by all non-abstract subclasses.
Abstract Method Syntax
abstract returnType methodName();
Abstract Class with Constructor
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
Rules of Using abstract
- You cannot instantiate an abstract class.
- If a class has one or more abstract methods, it must be declared abstract.
- Subclasses must override all abstract methods or be declared abstract themselves.
- Abstract methods cannot have a body.
- Constructors, static methods, and final methods cannot be abstract.
Abstract Class vs Interface
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 |
Real-Life Example
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");
}
}