//
// PolyConstructor.java
// Illustrates issues of polymorphic methods and constructors
//
// Nadeem Abdul Hamid
// CSC 121 - Berry College
//

abstract class Shape {
    abstract void draw();

    Shape() {
        System.out.println( "Shape() before draw()" );
        draw();
        System.out.println( "Shape() after draw()" );
    } // end Shape constructor
} // end class Shape

class Circle extends Shape {
    private int radius = 1;

    Circle( int r ) {
        System.out.println( "Circle.Circle() before, radius = " + radius );
        radius = r;
        System.out.println( "Circle.Circle() after, radius = " + radius );
    } // end Circle constructor

    void draw() { System.out.println( "Circle.draw(), radius = " + radius ); }
} // end class Circle

public class PolyConstructor {
    public static void main( String args[] ) {
        new Circle( 3 );
    } // end main method
} // end class PolyConstructor
