—Rectangle.class—
public class Rectangle {
private int length = 0;
private int breadth = 0;
public Rectangle() {}
public Rectangle(int value) {
length = value;
breadth = value;
}
public Rectangle(int length, int breadth) {
this.length = length;
this.breadth = breadth;
}
public int getLength() {
return length;
}
public int getBreadth() {
return breadth;
}
public void setLength(int length) {
this.length = length;
}
public void setBreadth(int breadth) {
this.breadth = breadth;
}
public int calcArea() {
return length * breadth;
}
}
—TestRectangle.class—
class TestRectangle {
public static void main(String[] args) {
Rectangle r1 = new Rectangle();
System.out.println("r1 Length: " + r1.getLength()); // 0
System.out.println("r1 Breadth: " + r1.getBreadth()); // 0
System.out.println("r1 Area: " + r1.calcArea()); // 0
System.out.println("-----------------------------------------");
Rectangle r2 = new Rectangle(10);
System.out.println("r2 Length: " + r2.getLength()); // 10
System.out.println("r2 Breadth: " + r2.getBreadth()); // 10
System.out.println("r2 Area: " + r2.calcArea()); // 100
System.out.println("-----------------------------------------");
Rectangle r3 = new Rectangle(10, 20);
System.out.println("r3 Length: " + r3.getLength()); // 10
System.out.println("r3 Breadth: " + r3.getBreadth()); // 20
System.out.println("r3 Area: " + r3.calcArea()); // 200
System.out.println("-----------------------------------------");
r1.setLength(100);
r1.setBreadth(200);
System.out.println("r1 Length: " + r1.getLength()); // 100
System.out.println("r1 Breadth: " + r1.getBreadth()); // 200
System.out.println("r1 Area: " + r1.calcArea()); // 20000
}
}
—Container.class—
public class Container extends Rectangle {
private int height = 0;
public Container() {
super(0);
}
public Container(int value) {
super(value);
height = value;
}
public Container(int length, int breadth, int height) {
super(length, breadth);
this.height = height;
}
public void setHeight(int height) {
this.height = height;
}
public int getHeight() {
return height;
}
public int calcVolume() {
return calcArea() * height;
}
}
—TestContainer.class—
class TestContainer {
public static void main(String[] args) {
Container c1 = new Container();
System.out.println("c1.getLength(): " + c1.getLength()); //0
System.out.println("c1.getBreadth(): " + c1.getBreadth()); //0
System.out.println("c1.getHeight(): " + c1.getHeight()); //0
System.out.println("c1.calcArea(): " + c1.calcArea()); //0
System.out.println("c1.calcVolume(): " + c1.calcVolume()); //0
System.out.println("----------------------------------------");
Container c2 = new Container(10);
System.out.println("c2.getLength(): " + c2.getLength()); //10
System.out.println("c2.getBreadth(): " + c2.getBreadth()); //10
System.out.println("c2.getHeight(): " + c2.getHeight()); //10
System.out.println("c2.calcArea(): " + c2.calcArea()); //100
System.out.println("c2.calcVolume(): " + c2.calcVolume()); //1000
System.out.println("----------------------------------------");
Container c3 = new Container(10, 20, 30);
System.out.println("c3.getLength(): " + c3.getLength()); //10
System.out.println("c3.getBreadth(): " + c3.getBreadth()); //20
System.out.println("c3.getHeight(): " + c3.getHeight()); //30
System.out.println("c3.calcArea(): " + c3.calcArea()); //200
System.out.println("c3.calcVolume(): " + c3.calcVolume()); //6000
}
}
Rectangle r = new Container(10, 20, 30); /*valid because where ever a class (instance) is expected, we can pass its instance or the instance of its direct or indirect subclass*/
Container c = new Rectangle(10, 20); /*invalid because of the reason above; Here class Rectangle is the super class of class Container*/