什么是subClass sc = new subClass()和superClass sc = new subClass之间的区别?

fla*_*lav 2 java initialization object

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?

}
}
Run Code Online (Sandbox Code Playgroud)

Var*_*har 5

简单说明:使用时

SuperClass obj = new SubClass();
Run Code Online (Sandbox Code Playgroud)

只能SuperClass访问定义的公共方法.定义的方法SubClass不是.

当你使用

SubClass obj = new SubClass(); 
Run Code Online (Sandbox Code Playgroud)

定义的公共方法SubClass也可以与SuperClass公共方法一起访问.

在两种情况下创建的对象都是相同的.

例如:

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.
Run Code Online (Sandbox Code Playgroud)