// abstract classes and methods abstract class Data { // abstract class can contain IVs public int k; // abstract class can contain mix of abstract and // non abstract methods public void print1() { System.out.println(k); } // method print1 // all subclasses will flesh out the print2 method abstract public void print2(); } // class Data class Data1 extends Data { public Data1(int k) { this.k = k; } public void print2() { System.out.println(k*k); } // method print2 } // class Data1 class Data2 extends Data { public Data2(int k) { this.k = k; } public void print2() { System.out.println(k+k); } // method print2 } // method Data2 public class abstract1 { public static void main(String args[]) { // instantiate objects Data1 d1 = new Data1(3); Data2 d2 = new Data2(3); // access inherited method: print1 // access abstract method: print2 d1.print1(); d1.print2(); d2.print1(); d2.print2(); } // method main } // class abstract1 /* Output 3 9 3 6 */