Java-Printing the Object

class PrintObject {
    public static void main(String[] args) {
        Rectangle r = new Rectangle(10, 20);
        Container c = new Container(100, 200, 300);
        System.out.println(r); /*Classname@hashCode*/
        System.out.println(r.toString()); /*Classname@hashCode*/

        System.out.println(r.hashCode()); /*hash code in integer form*/
            r.hashCode())); /*hash code in hexadecimal form*/
        System.out.println(r.getClass().getName()); /*returns classname*/

        System.out.println(r.getClass().getName() +
            "@" +
            Integer.toHexString(r.hashCode())); /*mimicking the operation done while an object is printed*/




java.lang.Object.toString(); //programmer need to override it to personalize it
java.lang.Object.hashCode(); //programmer need to override it to personalize it
java.lang.Object.getClass(); //no overriding
java.lang.Object.equals(); //programmer need to override it to personalize it

—Overriding toString() in class Rectangle—

public String toString() {
    return "Rectangle[length=" + length +
        ", breadth=" + breadth + "]";

—Overriding toString() in class Container—

public String toString() {
    return "Container[length=" + getLength() +
        ", breadth=" + getBreadth() +
        ", height=" + height + "]";
/*length and breadth are private in Rectangle and are not inherited to Container. So getLength() and getBreadth() are used in Container*/