• Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

Computer Notes

Library
    • Computer Fundamental
    • Computer Memory
    • DBMS Tutorial
    • Operating System
    • Computer Networking
    • C Programming
    • C++ Programming
    • Java Programming
    • C# Programming
    • SQL Tutorial
    • Management Tutorial
    • Computer Graphics
    • Compiler Design
    • Style Sheet
    • JavaScript Tutorial
    • Html Tutorial
    • Wordpress Tutorial
    • Python Tutorial
    • PHP Tutorial
    • JSP Tutorial
    • AngularJS Tutorial
    • Data Structures
    • E Commerce Tutorial
    • Visual Basic
    • Structs2 Tutorial
    • Digital Electronics
    • Internet Terms
    • Servlet Tutorial
    • Software Engineering
    • Interviews Questions
    • Basic Terms
    • Troubleshooting
Menu

Header Right

Home » Java » Inheritance » What is Abstract Class in Java?
Next →
← Prev

What is Abstract Class in Java?

By Dinesh Thakur

An abstract class is one whose header contains the reserved keyword, abstract. An abstract class is distinguishable from other classes by the fact that it is not possible to use the new operator to construct objects from them directly. Each abstract class may have at least zero abstract methods.

Some time there is a situation in which you feel the need of a superclass that has only declaration of few or all methods, with definition of few or none methods. But it is necessary that it must not be a completely defined or implemented class. The methods are declared only and specified by abstract type modifier called abstract method.

An abstract method is a method prototype (i.e. return type, method name, list of parameters and optionally throws clause) without any implementation. Its implementation is provided by the subclass(es) of the class in which it is declared. To create an abstract method, simply specify the modifier abstract followed by the method declaration and replace the method body by a semicolon. To declare any method as abstract use the following form:

abstract accessmodifer returntype methodName(<parameterlist>);

A class can have one or more abstract methods, that class must also be declared as abstract. To declare a class as abstract, simply add abstract keyword before the class keyword in the first line of class definition. Abstract class cannot be instantiated, i.e. you cannot create an object with the new operator of abstract class. The construct cannot be abstract, and no method can be abstract static. Any concrete subclass has to implements all the abstract method of its abstract superclass. Abstract classes can be used to create object references. For example: The Shape superclass that contains abstract method area () will now look like,

abstract class Shape {

      abstract double area();//abstract method

      abstract double circumference();

}

Abstract classes are like normal classes with fields and methods but you cannot create objects of abstract classes using the new operater. However, you can declare a variable of an abstract class type. Such variables are used to manipulate subclass objects polymorphically. In other words, such variable can be used to refer to an instance of any of the subclasses of abstract superclass.
For example: If you try to instantiate an object of the abstract superclass Shape using the following statement,

Shape s = new Shape(3,4);// error, Shape abstract

It will result in compile time error. Moreover, it makes no sense to create Shape object. What dimensions would it have? What would be its area? .
Abstract classes are useful when you want to create a generic type that is used as a superclass for two or more subclasses, but the superclass itself does not represent an actual object. For example: As in case of Shape class which we need for inheritance and polymorphism but want only to instantiate objects of its subclasses, not Shape itself.

The following is java abstract class example.

//Show how to create abstract class and method

abstract class Shape {

      abstract void area();

      abstract void circumference();

}

class Rectangle extends Shape {

       private double length ,breadth;

       Rectangle(double x,double y) {

               length = x; breadth = y

       }

           public void area() {

                 System.out.println(“Area of Rectangle is = “ + (length*breadth));

                 public void circumference() {

                       System.out.println (“Circumference of Rectangle is=” +2* (lengthtbreadth));

                 }

           }

class Circle extends Shape {

          private double radius;

          Circle(double r) {

                 radius = r ;

          }

          public void area() {

              System.out.println(“Area of Circle is= “+( Math.PI*radius*radius));

          }

          public void circumference() {

              System.out.println(“Circumference of Circle is=”+ 2*Math.PI*radius);

          }

}

      class AbstractDemo {

             public static void main(String[] args) {

                 Shape s; //Shape class reference variable

                 Rectangle r = new Rectangle(10,20);

                 s = r; // Assign rectangle reference to shape reference

                 s.area();

                 s.circumference();

                 Circle c = new Circle(5);

                 s = c; //Assign circle reference to shape reference

                 s.area();

                 s.circumference();

             }

       }

The following points should be kept in mind while working with abstract classes.

• A subclass of an abstract class can be instantiated only if it overrides each of the abstract methods of its superclass and provides an implementation for each of them. Such classes are known as concrete classes (i.e. not abstract).
• If a subclass does not implements all the abstract methods that it inherits, the subclass must be specified as abstract.
• An abstract method cannot be private. Since a private method cannot be inherited and therefore cannot be overridden (redefined) in the subclass.
• Constructors and static methods cannot be declared abstract. As constructors cannot be inherited so an abstract constructor could never be implemented. Also as subclasses cannot override static methods, so an abstract static method cannot be implemented.
• An abstract class has no use, no purpose unless it is extended. However, abstract superclass names can be used to invoke the static methods declared in those abstract superclasses.
• By marking the class abstract, the compiler will stop any code, anywhere, from ever creating an instance of that type.
• Not all the methods in an abstract class have to be abstract.
• You can declare the class as abstract even if it does not have any abstract method. Such abstract class indicates that the implementation is incomplete and is meant to serve as a superclass for one or more subclasses that will complete the implementation.
• Class can’t specify both abstract and final. As the abstract class can only be used if you subclass it and final class cannot be subclassed.

You’ll also like:

  1. What is Abstraction in Java? Abstract Class or Interface
  2. Difference between abstract class and interface in java
  3. Write a C++ program illustrates Abstract class and Pure virtual function.
  4. Abstract Methods and Classes in Java Example
  5. Abstract Data Type – What is an Abstract Data Type (ADT)?
Next →
← Prev
Like/Subscribe us for latest updates     

About Dinesh Thakur
Dinesh ThakurDinesh Thakur holds an B.C.A, MCDBA, MCSD certifications. Dinesh authors the hugely popular Computer Notes blog. Where he writes how-to guides around Computer fundamental , computer software, Computer programming, and web apps.

Dinesh Thakur is a Freelance Writer who helps different clients from all over the globe. Dinesh has written over 500+ blogs, 30+ eBooks, and 10000+ Posts for all types of clients.


For any type of query or something that you think is missing, please feel free to Contact us.


Primary Sidebar

Java Tutorials

Java Tutorials

  • Java - Home
  • Java - IDE
  • Java - Features
  • Java - History
  • Java - this Keyword
  • Java - Tokens
  • Java - Jump Statements
  • Java - Control Statements
  • Java - Literals
  • Java - Data Types
  • Java - Type Casting
  • Java - Constant
  • Java - Differences
  • Java - Keyword
  • Java - Static Keyword
  • Java - Variable Scope
  • Java - Identifiers
  • Java - Nested For Loop
  • Java - Vector
  • Java - Type Conversion Vs Casting
  • Java - Access Protection
  • Java - Implicit Type Conversion
  • Java - Type Casting
  • Java - Call by Value Vs Reference
  • Java - Collections
  • Java - Garbage Collection
  • Java - Scanner Class
  • Java - this Keyword
  • Java - Final Keyword
  • Java - Access Modifiers
  • Java - Design Patterns in Java

OOPS Concepts

  • Java - OOPS Concepts
  • Java - Characteristics of OOP
  • Java - OOPS Benefits
  • Java - Procedural Vs OOP's
  • Java - Polymorphism
  • Java - Encapsulation
  • Java - Multithreading
  • Java - Serialization

Java Operator & Types

  • Java - Operator
  • Java - Logical Operators
  • Java - Conditional Operator
  • Java - Assignment Operator
  • Java - Shift Operators
  • Java - Bitwise Complement Operator

Java Constructor & Types

  • Java - Constructor
  • Java - Copy Constructor
  • Java - String Constructors
  • Java - Parameterized Constructor

Java Array

  • Java - Array
  • Java - Accessing Array Elements
  • Java - ArrayList
  • Java - Passing Arrays to Methods
  • Java - Wrapper Class
  • Java - Singleton Class
  • Java - Access Specifiers
  • Java - Substring

Java Inheritance & Interfaces

  • Java - Inheritance
  • Java - Multilevel Inheritance
  • Java - Single Inheritance
  • Java - Abstract Class
  • Java - Abstraction
  • Java - Interfaces
  • Java - Extending Interfaces
  • Java - Method Overriding
  • Java - Method Overloading
  • Java - Super Keyword
  • Java - Multiple Inheritance

Exception Handling Tutorials

  • Java - Exception Handling
  • Java - Exception-Handling Advantages
  • Java - Final, Finally and Finalize

Data Structures

  • Java - Data Structures
  • Java - Bubble Sort

Advance Java

  • Java - Applet Life Cycle
  • Java - Applet Explaination
  • Java - Thread Model
  • Java - RMI Architecture
  • Java - Applet
  • Java - Swing Features
  • Java - Choice and list Control
  • Java - JFrame with Multiple JPanels
  • Java - Java Adapter Classes
  • Java - AWT Vs Swing
  • Java - Checkbox
  • Java - Byte Stream Classes
  • Java - Character Stream Classes
  • Java - Change Color of Applet
  • Java - Passing Parameters
  • Java - Html Applet Tag
  • Java - JComboBox
  • Java - CardLayout
  • Java - Keyboard Events
  • Java - Applet Run From CLI
  • Java - Applet Update Method
  • Java - Applet Display Methods
  • Java - Event Handling
  • Java - Scrollbar
  • Java - JFrame ContentPane Layout
  • Java - Class Rectangle
  • Java - Event Handling Model

Java programs

  • Java - Armstrong Number
  • Java - Program Structure
  • Java - Java Programs Types
  • Java - Font Class
  • Java - repaint()
  • Java - Thread Priority
  • Java - 1D Array
  • Java - 3x3 Matrix
  • Java - drawline()
  • Java - Prime Number Program
  • Java - Copy Data
  • Java - Calculate Area of Rectangle
  • Java - Strong Number Program
  • Java - Swap Elements of an Array
  • Java - Parameterized Constructor
  • Java - ActionListener
  • Java - Print Number
  • Java - Find Average Program
  • Java - Simple and Compound Interest
  • Java - Area of Rectangle
  • Java - Default Constructor Program
  • Java - Single Inheritance Program
  • Java - Array of Objects
  • Java - Passing 2D Array
  • Java - Compute the Bill
  • Java - BufferedReader Example
  • Java - Sum of First N Number
  • Java - Check Number
  • Java - Sum of Two 3x3 Matrices
  • Java - Calculate Circumference
  • Java - Perfect Number Program
  • Java - Factorial Program
  • Java - Reverse a String

Other Links

  • Java - PDF Version

Footer

Basic Course

  • Computer Fundamental
  • Computer Networking
  • Operating System
  • Database System
  • Computer Graphics
  • Management System
  • Software Engineering
  • Digital Electronics
  • Electronic Commerce
  • Compiler Design
  • Troubleshooting

Programming

  • Java Programming
  • Structured Query (SQL)
  • C Programming
  • C++ Programming
  • Visual Basic
  • Data Structures
  • Struts 2
  • Java Servlet
  • C# Programming
  • Basic Terms
  • Interviews

World Wide Web

  • Internet
  • Java Script
  • HTML Language
  • Cascading Style Sheet
  • Java Server Pages
  • Wordpress
  • PHP
  • Python Tutorial
  • AngularJS
  • Troubleshooting

 About Us |  Contact Us |  FAQ

Dinesh Thakur is a Technology Columinist and founder of Computer Notes.

Copyright © 2025. All Rights Reserved.

APPLY FOR ONLINE JOB IN BIGGEST CRYPTO COMPANIES
APPLY NOW