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)
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.
在下一行中,您调用A了B实例上的一个方法.没关系.
在最后一行中,您尝试调用B方法.但由于静态类型的a1是A这会导致编译错误.但是,如果您编写了以下内容,那么编译并运行就可以了.
((B) a1).show1();
Run Code Online (Sandbox Code Playgroud)
如果这不能回答您的问题,请重新说明,以便我们能够更好地理解它.
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |