2016-06-25 8 views
-5

私はJavaを知らない。Java:保護された文字列をオーバーライド

可能であれば、迅速な修正が必要です。

保護された文字列を無効にする方法は?

私が持っている:

public class Something { 

    protected String changeMe = "this"; 

    public String viewForm() { 
     ... 
     return getForm(); 
    } 

    public String getForm() { 
     return changeMe; 
    } 

} 

myfileを:

public class MySomething extends Something { 

    public String viewForm() { 
     return super.viewForm(); 
    } 
} 

をクラスMySomethingchangeMe = "that"を使用する方法は?おかげさまで

+2

オーバーライドを呼び出して値を変更することができますが、ここで間違った用語です。値を変更しようとしているだけです。はい? – ChiefTwoPencils

+0

"オーバーライド"は、メソッドに対して行うことです。フィールドの場合は、それを他のものに割り当てます。 – khelwood

+1

あなたがそれを知らないと、あなたがなぜJavaを使うのか分かりません。 – Li357

答えて

2

は実際には、他の人があなたの質問に答えています。

  1. ソリューション1(実際は悪いソリューション):ケースでは、あなたはJavaがそれを把握するのに苦労し、本当に新しいもの、あなたの質問への最も簡単な答えは、ちょうど、派生クラスのコンストラクタで、あなたの上記の文を入れています:

    public void setChangeMe(String newValue) { 
        changeMe = newValue; 
    } 
    
  2. public class MySomething extends Something { 
        public MySomething() { 
         changeMe = "that" 
        } 
    } 
    
  3. あなたの問題のためのよりよい解決策は、次のように(あなたはそのソースコードへのアクセス権を持っている場合には)クラスSomethingでセッターメソッドを定義することです

、あなたが

Something s = new Something(); 
s.setChangeMe("that"); 
+0

ありがとう。私はJavaには新しいものではありません。Javaについてはまったく分かりません:)私は、バックエンドの人たちにこの問題を解決するために月曜日を待たせたくありませんでした。 –

+0

ようこそ。 – ujulu

0

単語オーバーライドは、コンパイラのヒントです。独自の方法で親クラスまたはインターフェイスのメソッドを実装するコードを記述していることを伝えてください。それが定義されていないため、あなたはchangemeをオブジェクトをトーソーアクセスできます

は、変数/属性/フィールドをオーバーライドする用語の誤った使用であり、そして、あなたの質問に答えるためにはあまり意味

しない作ることを言いましたプライベートとして...あなたは...

例値を直接変更することができます。

public static void main(String args[]) { 
    MySomething ms = new MySomething(); 
    System.out.println(ms.changeMe); 
    ms.changeMe = "that"; 
    System.out.println(ms.changeMe); 
} 
+0

それは質問への答えでも、コメントでまだ指摘されていないものでもありません。 "答えではない"とフラグが立てられています。 – Paul

+0

それを得ました....興味があれば更新を見てください –

+1

投票を取り下げた – Paul

関連する問題