class A
{
// body of class A
}
class B extends A
{
// body of class B
}
We can cast the subclass object to a super class reference variable. i.e. Super class reference variable can hold the subclass object...
A a = new B();
But Subclass reference variable can not hold the super class object. WHY?
B b = new A(); // Compile time error
{
// body of class A
}
class B extends A
{
// body of class B
}
We can cast the subclass object to a super class reference variable. i.e. Super class reference variable can hold the subclass object...
A a = new B();
But Subclass reference variable can not hold the super class object. WHY?
B b = new A(); // Compile time error
because Class B is having the data member and methods of class A along with its own data member and methods. class A cannot initialize variables of class B(B b = new A(); ).
ReplyDeleteB b = new A();
DeleteHere, we are calling the constructor of class A. So obviously it will initialize all the instance variables of class A. But the question is why we can't assign the object reference of class A to the reference variable of class B?
When a subclass extends a superclass, it can also have additional attributes and methods not existing in the superclass.As the variable type determines what methods you can use "on" it, a variable of a subclass type can hence expose more operations available than the superclass has implemented. That's why a variable of a subclass type can't reference an instance of a
ReplyDeletesuperclass.
Ya, You are right.
DeleteWe use the reference variable of a class when we want to access the members of any class. So if we assign the reference of object of class A to reference variable of class A, it will be assumed that it will be having access to all the members of class B. But we are invoking the constructor of class A only, which will not have the members of class B.
Therefore, the subclass reference variable can't hold the super-class object reference.
Good Post! Thank you so much for sharing the nice post, it was so good to read and useful to improve
ReplyDeleteJava Training in Electronic City