这里内部发生​​了什么?

use*_*656 2 java oop

class A
{
    int i=10;
    void show()
    {
        System.out.println("show()");
    }
}

class B extends A
{
    int j=20;
    void show1()
    {
        System.out.println("show1()");
    }
    public static void main(String ar[])
    {
        A a1=new B();//What happened internally here.please give me answer.
        a1.show();
        a1.show1();
    }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*n C 7

A a1=new B();//What happened internally here.please give me answer.
a1.show();
a1.show1();
Run Code Online (Sandbox Code Playgroud)

发生的事情是您创建了一个实例B并分配了对类型变量的引用A.没关系,因为B实例是一个 A.

在下一行中,您调用AB实例上的一个方法.没关系.

在最后一行中,您尝试调用B方法.但由于静态类型的a1A这会导致编译错误.但是,如果您编写了以下内容,那么编译并运行就可以了.

((B) a1).show1();
Run Code Online (Sandbox Code Playgroud)

如果这不能回答您的问题,请重新说明,以便我们能够更好地理解它.