首先你需要知道类的相关知识,针对A a = new Elm(); 一般很少这样写,等号前是定义a是类A的一个对象,存在栈上,等号后面是在堆上分配存储空间。存储空间数据的存放是以类Elm结构为主。但是当你访问a相关属性时,由于类是A,而且是静态变量,所以返回的都是10.
如果你再增加一行Elm b = (Elm) a;这是输出b.x 就是20,因为这时查看的是类Elm,所以会去堆上查询这个数据。当然如果Elm没有这个属性,走的还是父类A。
两次都是访问的静态类变量x呀,printX是A类的静态方法,访问的是A的x,下面也同样是访问了A.x,所以两次输出都是10
有帮助望采纳~