Loading

Java Tutorial Hub

Training & Tutorials for Java Beginners

Java Tutorial 18 - Abstract Method & Class

 

Consider the following class hierarchy consisting of a Shape class which is inherited by three classes Rectangle , Circle and Triangle. The Shape class is created to save on common attributes and methods shared by the three classes Rectangle , Circle and Triangle. calculateArea() is one such method shared by all 3 child classes and present in Shape class.

 

                        java-abstract-classes

Now, assume you write code to create objects for the classes depicted above. Lets observe how these objects will look in a practical world.

An object of the class rectangle,  will gives a rectangle , a shape we so commonly observed in everyday life


Java_Abstract
An object of the class triangle, will gives a triangle , again a common everyday shape Java_Abstract_Class
But what would an object of Class Shape look like in a practical world ??   java_abstract_method

 

If you observe the Shape class serves in our goal of achieving inheritance and polymorphism . But it was not built to be instantiated.Such classes can be labeled Abstract.An abstract class can not be instantiated.

Ex.

abstract class Shape{
// code    
}

 

It is possible that you DO NOT label Shape class as Abstract and then instantiate it. But such object will have no use in your code and will open a room for potential errors. Hence this is not desirable.

 

abstract methods

 

As we all know, the formula for calculation area for  rectangle , circle & triangle  is different. The calculateArea() method will have to be overridden by the  inheriting classes.It makes so sense defining it in the Shape class, but we need to make sure that all the inheriting classes do have the method.

 

Such methods can be labeled abstract.

 

Ex

abstract public void calculateArea();

 

For an abstract method , no implementation for is required. Only the signature of the method is defined.


 

Abstract Class & Method Important Points

 

  • An abstract class may also have concrete (complete) methods.
  • For design purpose, a class can be declared abstract even if it does not contain any abstract methods
  • Reference of an abstract class can point to objects of its sub-classes thereby achieving run-time polymorphism Ex:  Shape obj = new Rectangle();
  • A class must be compulsorily labeled abstract , if it has one or more abstract methods.

 

 

FINAL

 

The final modifier applies to classes, methods, and variables. The meaning of final varies from context to context, but the essential idea is the same.

 

  • A final class may not be inherited
  • A final variable becomes a constant and its value can not be changed.
  • A final method may not be overridden. This is done for security reasons and these methods are used for optimization.
  • A final class can not be inherited

 

Assignment:-To learn abstract & final keywords

 

Step 1) Copy the following code into an Editor

abstract class Shape{
   final int b = 20;
   public void display(){
     System.out.println("This is display method");
   }
   abstract public void calculateArea();
}

class Rectangle extends Shape{
   public static void main(String args[]){
      Rectangle obj = new Rectangle();
      obj.display();
     //obj.b=200;
  }
}

 

Step 2) Save , Compile & Run the code.

 

Step 3 ) Error = ? The abstract method is not implemented int the class Rectangle . Fix the issue and execute the code again.

 

Step 4) Uncomment line # 13 . Save & Compile the code.

 

Step 5) Error = ?  variable b is final


 

                                                                          Back to Java Tutorials Index Page 

 
 
Joomla 1.5 Templates by Joomlashack