What are Abstract Classes

You can require that certain methods be overridden by subclasses by specifying the abstract type modifier. To declare an abstract method, use this general form:


abstract type name(parameter-list);

No method body is present for abstract method.

Any class that contains one or more abstract methods must also be declared abstract.


abstract class MyAbstractClass{
   abstract type name(parameter-list); 
}

Here is an abstract class, followed by a class which implements its abstract method.

 
abstract class MyAbstractClass {
  abstract void callme();

  void callmetoo() {
    System.out.println("This is a concrete method.");
  }
}

class B extends MyAbstractClass {
  void callme() {
    System.out.println("B's implementation of callme.");
  }
}

public class Main {
  public static void main(String args[]) {
    B b = new B();
    b.callme();
    b.callmetoo();
  }
}

The output:


B's implementation of callme.
This is a concrete method.

Using abstract methods and classes

 
abstract class Shape {
  double height;
  double width;

  Shape(double a, double b) {
    height = a;
    width = b;
  }
  abstract double area();
}

class Rectangle extends Shape{
  Rectangle(double a, double b) {
    super(a, b);
  }
  double area() {
    System.out.println("Inside Area for Rectangle.");
    return height * width;
  }
}
class Triangle extends Shape{
  Triangle(double a, double b) {
    super(a, b);
  }
  double area() {
    System.out.println("Inside Area for Triangle.");
    return height * width / 2;

  }
}

public class Main {
  public static void main(String args[]) {
    Rectangle r = new Rectangle(10, 5);
    Triangle t = new Triangle(10, 8);

    Shape figref;

    figref = r;
    System.out.println("Area is " + figref.area());

    figref = t;
    System.out.println("Area is " + figref.area());
  }
}

The output:


Inside Area for Rectangle.
Area is 50.0
Inside Area for Triangle.
Area is 40.0
Home 
  Java Book 
    Class