2016-10-28 21 views
-1

は、私は次のようにコードの一部を書いた:Java親クラスのある関数()にある変数は、子クラスがどのように使用しますか?

class MyParent { 
    String a = "abcdefg"; 
    String b; 
    public void print() { 
     b = "ABCDEFG"; 
     System.out.println(a); 
    } 
} 
class MyChild extends MyParent { 
    String c = super.b; 
    public void print2() { 
     System.out.println(c); 
    } 
} 

public class Parent { 
    public static void main(String args[]) { 
     MyParent mp = new MyParent(); 
     mp.print(); 
     MyChild mc = new MyChild(); 
     mc.print2();  
    } 
} 

2つのクラスがあり、それらは親&子です。 class MyParentで宣言されたbがあり、関数print()に値が与えられています。
bを子クラスMyChildに印刷します。しかし、コードを実行すると正しく印刷できますが、bnullと表示されます。

私はJavaが初めてです。それについて私を助けてください。誰にでも


UPDATE

おかげで、私の質問に答えます。私は解決策を見つけた。

私は最も簡単な方法を使用しました。私はそれを**static String b**に変更しました。

static私の議論はすべての周りで使用することができます。

しかし、データ宣言を使用する正確な方法はわかりません。だから私は学び続けるでしょう。

+0

https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html、http://www.javaworld.com/article/2987426/core-java/java-101- java-part-1の継承。html –

+0

あなたは全く別の2つのオブジェクトを作成しました。 'mp.b'は' 'ABCDFEF" 'になりますが、' mc.b'は決して他のものに設定しないので ''ヌルです。 –

答えて

0

mpとmcオブジェクトのインスタンスが異なります。したがって、bの値はオブジェクトmpでは "ABCDEFG"に設定されていますが、mc.bはまだnullです。

mc.print()、その後mc.print2()

を呼び出してみしかし、あなたは、オブジェクトのの異なるインスタンスを更新するには、Bの同じ値を共有したい場合は、bは静的にすることができます。

0

あなたは"B"を初期化するMyParentの

print() 

メソッドを呼び出す必要があります。あなたはそれを初期化していません。

2

null と宣言したMyParentクラスでは、それが表示されます。 print()メソッドでbを初期化しました。ですから、bの値を取りたい場合は、この操作を行うことができます。

MyChild mc = new MyChild(); 
mc.print(); 
0

uは保護され、子供も持っbの親が文字列を得た場合より少ない今の子供に行きましたクラスエヴリーメソッドと属性を拡張させるとき文字列b 子の文字列bが親の文字列bの同じ値になる場合uコンストラクタを作成してコンストラクタ内で作成this.b = super.bとその意味は、子クラスはその属性を初期化します。 このコードでは、オブジェクト指向のような属性を初期化するべきではありません。

class MyParent { 
      String a = "abcdefg"; 
      String b="ABCDEFG"; 

      public MyParent(){} 

      public void print() { 
       System.out.println(a); 
      } 
     } 

    class MyChild extends MyParent { 
     public MyChild(){ 
     this.b =super.b; 
    } 
     public void print2() { 

      System.out.println(b); 
    } 
} 

    public class Parent { 
     public static void main(String args[]) { 
      MyParent mp = new MyParent(); 
      mp.print(); 
      MyChild mc = new MyChild(); 
      mc.print2();  
     } 
    } 
関連する問題