Note that there are some explanatory texts on larger screens.

plurals
  1. POJava superclass inheritance
    text
    copied!<p>I have a superclass (SimpleGeometricObject) which is extended to two subclasses (CircleFromSimpleGeometricObject and RectangleFromSimpleGeometricObject), and a class that invokes CircleFromSimpleGeometricObject and RectangleFromSimpleGeometricObject called TestCircleRectangle. Following the debugger, for subclass CircleFromSumpleGeometricObject, this line of code: </p> <pre><code>public CircleFromSimpleGeometricObject(double radius){ this.radius = radius; } </code></pre> <p>somehow invokes the superclass SimpleGeometricObject: </p> <pre><code> /** Construct a default geometric object */ public SimpleGeometricObject() { dateCreated = new java.util.Date(); } </code></pre> <p>I am a bit confused about how this happens and why, can someone help me understand why this happens? Below are the codes to all the classes.</p> <pre><code>public class SimpleGeometricObject { private String color = "white"; private boolean filled; private java.util.Date dateCreated; /** Construct a default geometric object */ public SimpleGeometricObject() { dateCreated = new java.util.Date(); } /** Construct a geometric object with the specified color * and filled value */ public SimpleGeometricObject(String color, boolean filled) { dateCreated = new java.util.Date(); this.color = color; this.filled = filled; } /** Return color */ public String getColor() { return color; } /** Set a new color */ public void setColor(String color) { this.color = color; } /** Return filled. Since filled is boolean, its get method is named isFilled */ public boolean isFilled() { return filled; } /** Set a new filled */ public void setFilled(boolean filled) { this.filled = filled; } /** Get dateCreated */ public java.util.Date getDateCreated() { return dateCreated; } /** Return a string representation of this object */ public String toString() { return "created on " + dateCreated + "\ncolor: " + color + " and filled: " + filled; } } public class CircleFromSimpleGeometricObject extends SimpleGeometricObject { private double radius; public CircleFromSimpleGeometricObject() { } public CircleFromSimpleGeometricObject(double radius){ this.radius = radius; } public CircleFromSimpleGeometricObject(double radius, String color, boolean filled) { this.radius = radius; setColor(color); setFilled(filled); } /** Return radius */ public double getRadius() { return radius; } /** Set a new radius */ public void setRadius(double radius) { this.radius = radius; } /** Return area */ public double getArea() { return radius * radius * Math.PI; } /** Return diameter */ public double getDiameter() { return 2 * radius; } /** Return perimeter */ public double getPerimeter() { return 2 * radius * Math.PI; } /** Print the circle info */ public void printCircle() { System.out.println("The circle is created " + getDateCreated() + " and the radius is " + radius); } } public class RectangleFromSimpleGeometricObject extends SimpleGeometricObject { private double width; private double height; public RectangleFromSimpleGeometricObject() { } public RectangleFromSimpleGeometricObject( double width, double height) { this.width = width; this.height = height; } public RectangleFromSimpleGeometricObject( double width, double height, String color, boolean filled) { this.width = width; this.height = height; setColor(color); setFilled(filled); } /** Return width */ public double getWidth() { return width; } /** Set a new width */ public void setWidth(double width) { this.width = width; } /** Return height */ public double getHeight() { return height; } /** Set a new height */ public void setHeight(double height) { this.height = height; } /** Return area */ public double getArea() { return width * height; } /** Return perimeter */ public double getPerimeter() { return 2 * (width * height); } } public class TestCircleRectangle { public static void main(String[] args) { CircleFromSimpleGeometricObject circle = new CircleFromSimpleGeometricObject(1); System.out.println("A circle " + circle.toString()); System.out.println("The color is " + circle.getColor()); System.out.println("The radius is " + circle.getRadius()); System.out.println("The area is " + circle.getArea()); System.out.println("The diamter is " + circle.getDiameter()); RectangleFromSimpleGeometricObject rectangle = new RectangleFromSimpleGeometricObject(2, 4); System.out.println("\nA rectangle " + rectangle.toString()); System.out.println("The area is " + rectangle.getArea()); System.out.println("The perimeter is " + rectangle.getPerimeter()); } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload