The Java Program: Abstract.java

  1 // Abstract.java
  2 
  3 abstract class A {
  4    abstract void callme();
  5    void metoo() {
  6       System.out.println ("A's metoo method");
  7    }
  8 }
  9 
 10 class B extends A {
 11    void callme() {
 12       System.out.println ("B's callme method");
 13    }
 14 }
 15 
 16 class C extends A {
 17    void callme() {
 18       System.out.println ("C's callme method");
 19    }
 20 }
 21 
 22 /*
 23      Must declare "D" to be abstract or implement "callme".
 24      Possible to make class "abstract" even though it isn't.
 25  */
 26 abstract class D extends A {}
 27 
 28 class Abstract {
 29    public static void main (String args[]) {
 30       A a = new B();
 31       a.callme();     // B's callme method
 32       a.metoo();      // A's metoo method
 33       a = new C();
 34       a.callme();     // C's callme method
 35 //    a = new D();    // Compile-time error; can't be instantiated
 36    }
 37 }