2016-12-08 4 views
-2

//これらは、次のように、フィールドにアクセスし、それがCTOR /メソッドの内部で行われるべきではなく、クラスレベルでそれを修正しようとしている 、それを実行してください私の二つのクラス
TestSetupBAT.javajavaの子クラスのvarible(親クラスに存在する)をオーバーライドする方法は?

public class TestSetupBAT {   
  public static List<String> uniqueNameFields = new ArrayList<String>();   
} 


SmokeTest.java 

public class SmokeTest extends TestSetupBAT { 
uniqueNameFields.add("welcome"); //throws error 
} 
+0

どのようなエラーが表示されますか? – shmosel

+0

ようこそスタックオーバーフロー! [ツアー]を見て周りを見て、[ヘルプ]、特に[*良い質問をするにはどうすればいいですか?*](/ help/how-to-ask)上記の質問はすべてクリアです。 SmokeTestの 'uniqueNameFields'に何をしたいですか?あなたは何をしようとしましたか? –

答えて

-1

です。 Javaで子クラスで(親クラスに存在する)varibleを上書きする方法

public class TestSetupBAT 
{   
  public static List<String> uniqueNameFields = new ArrayList<String>();   
} 


SmokeTest.java 

public class SmokeTest extends TestSetupBAT { 

    public SmokeTest() 
    { 
    uniqueNameFields.add("welcome"); 
    } 
} 
+0

なぜdownvote?説明してください – ScanQR

-1

staticフィールドは、Javaで継承されたので、あなたがあなたのサブクラスすなわち、SmokeTestでそれを上書きしたい場合は、uniqueNameFieldsためstaticを削除することはできません。

また、uniqueNameFields.add("welcome");コードはどのブロック(どのメソッド、コンストラクタなど)にも属しません。すなわち、uniqueNameFields.add("welcome");のステートメントはコンストラクタまたはメソッド(下に示す)または初期化ブロックの下にある必要があります。

public class TestSetupBAT {   
  protected List<String> uniqueNameFields = new ArrayList<String>();   
} 

public class SmokeTest extends TestSetupBAT { 

    //override uniqueNameFields 
    proectected List<String> uniqueNameFields = new ArrayList<String>();   

    public void method1() { 

     //"welcome" will be added to overridden uniqueNameFields 
     uniqueNameFields.add("welcome"); 
    } 
} 
+0

downvoters、私はこの問題を知らせてください – developer

+0

私は理解しています。ありがとう、あなたjavaguy .. – Stan

関連する問題