子类与父类拥有同名属性,在数组中调用

问题遇到的现象和发生背景

学习Javase的时候,对于继承的理解感觉不是十分的透彻,在研究过程中发现一些结论,自己浅浅记录一下

用代码块功能插入代码,请勿粘贴截图

父类:

 public abstract  class Weapon {
  String name="武器";
  boolean move;
  boolean attack;
  public void ww(){
    System.out.println("父类武器");
  }
}

子类:

public class plane extends Weapon{
    String name="飞机";
    boolean move=true;
    boolean attack=true;

    @Override
    public void ww() {
        System.out.println("子类武器");
    }
}

建立父类数组进行存放子类元素

public class jiChengTest {
    public static void main(String[] args) {
        plane p=new plane();

        Weapon[] W=new Weapon[]{new plane()};
        System.out.println(W[0].name);

        plane[] p=new plane[]{new plane()};
        System.out.println(p[0].name);
    }
}

运行结果及报错内容

武器
飞机

我的解答思路和尝试过的方法
    子类与父类具有同名属性,将子类存放到数组中时,调用数组元素的属性,取决于数组的类型,
    父类型的数组则调父类的属性,子类型的数组则调子类的属性
    使用于“取决于左边是谁”