Professional Documents
Culture Documents
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.
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
An object of the class triangle, will gives a triangle , again a common everyday shape
But what would an object of Class Shape look like in a practical world ??
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.
1 2 3
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.
For an abstract method , no implementation for is required. Only the signature of the method is defined.
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
1 abstract class Shape{ 2 3 4 5 6 7 } 8 9 class Rectangle extends Shape{ } abstract public void calculateArea(); final int b = 20; public void display(){ System.out.println("This is display method");
Number class contains methods like intValue, longValue which are abstract.
public abstract int intValue(); public abstract long longValue(); public abstract float floatValue(); public abstract double doubleValue();
Any class with an abstract method should also be declared abstract. abstract class Animal{ abstract String bark(); } Classes that extend the abstract class should define the abstract method (or themselves be declared abstract). class Dog extends Animal{ public String bark(){ return "BOW BOW"; } } Full example code below: abstract class Animal{ private String name; abstract String bark(); public String getName(){ return this.name; } } class Dog extends Animal{ public String bark(){ return "BOW BOW"; } } @Test public void abstractClassExample(){ Dog dog = new Dog(); assertEquals("BOW BOW", dog.bark()); }
Series Navigation
Abstract Class Java Example Program with Code An abstract class in java cannot have instances defined.
//COMPILATION ERROR!! //AbstractClassExample example = new AbstractClassExample()
Syntax : You can create an abstract class in Java using the keyword abstract in class definition.
abstract class AbstractClassExample