class superClass {}
class subClass extends superClass{}
public class test
{
public static void main()
{
superClass sc1 = new subClass();
subClass sc
Simple explanation : When you use
SuperClass obj = new SubClass();
Only public methods that are defined in SuperClass
are accessible. Methods defined in SubClass
are not.
When you use
SubClass obj = new SubClass();
public methods defined in SubClass
are also accessible along with the SuperClass
pubic methods.
Object created in both cases is the same.
Ex:
public class SuperClass {
public void method1(){
}
}
public class SubClass extends SuperClass {
public void method2()
{
}
}
SubClass sub = new SubClass();
sub.method1(); //Valid through inheritance from SuperClass
sub.method2(); // Valid
SuperClass superClass = new SubClass();
superClass.method1();
superClass.method2(); // Compilation Error since Reference is of SuperClass so only SuperClass methods are accessible.