Bre*_*min 1 java polymorphism inheritance instanceof
考虑以下代码:
class B
{
int j =100;
}
class A extends B
{
int i=10;
}
public class Test
{
public static void main(String[] args)
{
A obj =new A();
System.out.println(obj);
B obj1 =obj;
System.out.println(obj1); // here i am confused
if( obj1 instanceof A )
{
System.out.println("yes"); //here i am confused
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里的输出是:
A@35186a
A@35186a
yes
Run Code Online (Sandbox Code Playgroud)
现在obj1是B类的一个超类的实例,为什么将toString()它显示为A的对象呢?另外,instanceof运算符如何将它显示为A类的实例?
您必须区分引用和实际对象.
B obj1 = obj;
Run Code Online (Sandbox Code Playgroud)
在这里,您可以创建一个名为的新引用类型.引用的对象仍然是一个对象,但永远不能更改.Bobj1A