Whats the difference between subClass sc = new subClass() and superClass sc = new subClass?

initialization, java, object

Solution

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` public 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.

Problem

``` class superClass {} class subClass extends superClass{} public class test { public static void main() { superClass sc1 = new subClass(); subClass sc2 = new subClass(); //whats the difference between the two objects created using the above code? } } ```

Original source

Related problems