Java Object Creation of Inherited Class

Course Curriculum

Java Object Creation of Inherited Class

Java Object Creation of Inherited Class

In inheritance, subclass acquires super class properties. An important point to note is, when subclass object is created, a separate object of super class object will not be created. Only a subclass object object is created that has super class variables.

This situation is different from a normal assumption that a constructor call means an object of the class is created, so we can’t blindly say that whenever a class constructor is executed, object of that class is created or not.

// A Java program to demonstrate that both super class
// and subclass constructors refer to same object

// super class
class Fruit
{
public Fruit()
{
System.out.println("Base class constructor");
System.out.println("Base class object hashcode :" +
this.hashCode());
System.out.println(this.getClass().getName());
}
}

// sub class
class Apple extends Fruit
{
public Apple()
{
System.out.println("Subclass constructor invoked");
System.out.println("Sub class object hashcode :" +
this.hashCode());
System.out.println(this.hashCode() + " " +
Base.hashCode());

System.out.println(this.getClass().getName() + " " +
super.getClass().getName());
}
}

// driver class
public class Test2
{
public static void main(String[] args)
{
Apple myApple = new Apple();
}
}
Output:

Base class constructor
Base class object hashcode :366712642
Apple
sub class constructor
sub class object hashcode :366712642
366712642 366712642
Apple Apple

As we can see that both super class(Fruit) object hashcode and subclass(Apple) object hashcode are same, so only one object is created. This object is of class Apple(subclass) as when we try to print name of class which object is created, it is printing Apple which is subclass.

Java and Multiple Inheritance (Prev Lesson)
(Next Lesson) Inheritance and constructors in Java