2017-01-24 57 views
2

我需要覆蓋父類中的一個方法。子類中的方法應該將一個變量添加到列表中,該列表在父類的方法中初始化。如何將一個元素添加到已在超級方法中定義的列表中?

class A{ methodA(){ 
    ..logic 
    List l = new ArrayList(); 
    l.add(..) } ..logic } 

class B extends A{ 
    methodB(){ 
    //need to add variable to l and then call method A 
    } } 

這是可能的嗎?

+4

嘛'l'的作用域是你的'methodA',所以你不能在'methodB'訪問它。如果你要編寫[mcve]而不是僞代碼,並且常規地編寫代碼,它將使它更容易幫助你。 –

+0

創建一個方法,添加元素並通過super.add()從B調用它 – Milaci

回答

1

我覺得這是你所需要的

class Parent 
{ 
    List<Integer> list = new ArrayList<Integer>(); 
    int i; 

    public void setList() 
    { 
     i = 10; 
     for(int i=0; i<10; i++) 
      list.add(i); 
    } 
} 

class Child extends Parent 
{ 
    public void setList() 
    { 
     super.setList(); 
     list.add(i); 
    } 
} 

public class OverrideSuperClassMethodByAddingTOList 
{ 
    public static void main(String[] args) 
    { 
     Child c1 = new Child(); 
     c1.setList(); 
     System.out.println(c1.list); 
    } 
} 
2

你寫你的僞代碼的方式似乎有一個邏輯炸彈製作方法。在你的methodB聲明:

//need to add variable to l and then call method A 

但是當你調用了methodA,列表L被初始化。爲什麼不有

private List l = new ArrayList(); 

在A與適當的getter和setter和操縱?

相關問題