Abstract Class in Java
Abstract Class in Java
A class that is declared with abstract keyword, is known as abstract class in java. It can
have abstract and non-abstract methods (method with body).
Before learning java abstract class, let's understand the abstraction in java first.
Abstraction in Java
Abstraction is a process of hiding the implementation details and showing only
functionality to the user.
Another way, it shows only important things to the user and hides the internal details for
example sending sms, you just type the text and send the message. You don't know the
internal processing about the message delivery.
Abstraction lets you focus on what the object does instead of how it does it.
• Interface (100%)
abstract method
A method that is declared as abstract and does not have implementation is known as
abstract method.
A factory method is the method that returns the instance of the class. We will learn about
the factory method later.
In this example, if you create the instance of Rectangle class, draw() method of Rectangle
class will be invoked.
File: TestAbstraction1.java
File: TestAbstraction2.java
• //example of abstract class that have method body
• abstract class Bike{
• Bike(){System.out.println("bike is created");}
• abstract void run();
• void changeGear(){System.out.println("gear changed");}
• }
•
• class Honda extends Bike{
• void run(){System.out.println("running safely..");}
• }
• class TestAbstraction2{
• public static void main(String args[]){
• Bike obj = new Honda();
• obj.run();
• obj.changeGear();
• }
• }
Test it Now
bike is created
running safely..
gear changed
Rule: If there is any abstract method in a class, that class must be abstract.
• class Bike12{
• abstract void run();
• }
Test it Now
compile time error
Rule: If you are extending any abstract class that have abstract method, you must either
provide the implementation of the method or make this class abstract.
Note: If you are beginner to java, learn interface first and skip this example.
• interface A{
• void a();
• void b();
• void c();
• void d();
• }
•
• abstract class B implements A{
• public void c(){System.out.println("I am C");}
• }
•
• class M extends B{
• public void a(){System.out.println("I am a");}
• public void b(){System.out.println("I am b");}
• public void d(){System.out.println("I am d");}
• }
•
• class Test5{
• public static void main(String args[]){
• A a=new M();
• a.a();
• a.b();
• a.c();
• a.d();
• }}
Test it Now
Output:I am a
I am b
I am c
I am d