代码之家  ›  专栏  ›  技术社区  ›  noone

相反,它调用的是数组类add(),它调用的是ArrayCount类add()

  •  1
  • noone  · 技术社区  · 6 年前

    我想知道java中脆弱基类问题的原因。

    这是代码,我找不到触发子类方法的原因,即使我已经给出了在父类中触发方法的指令

    在公共类数组中

    public class Array {
        private ArrayList<Object> a = new ArrayList<Object>();
    
        public void add(Object element)
        {
            a.add(element);
        }
    
        public void addAll(Object elements[])
        {
            for (int i = 0; i < elements.length; ++i)
                add(elements[i]);
        }
    }
    

    在ArrayCount类中。。。这个类负责存储列表的计数

    public class ArrayCount extends Array {
        public int count = 0;
    
        @Override
        public void add(Object element)
        {
            super.add(element);
            ++count;
        }
    
        @Override
        public void addAll(Object elements[])
        {
            super.addAll(elements);
            count += elements.length;
        }
    }
    

    主要课程如下

    public class Main {
    
        public static void main(String[] args) {
    
            ArrayCount ac = new ArrayCount();
            Object [] objArray = new Object[7];
            objArray[0] = "xxx";
            objArray[1] = "xxx";
            objArray[2] = "xxx";
            objArray[3] = "xxx";
            objArray[4] = "xxx";
            objArray[5] = "xxx";
            objArray[6] = "xxx";
    
            ac.addAll(objArray);
            System.out.println("count is : " + ac.count);
            //COUNT IS 14 NOT 7
        }
    }
    
    0 回复  |  直到 6 年前