質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

2076閲覧

java ゲッター セッター

kisaragizinzin7

総合スコア90

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2015/08/18 04:19

ゲッターとセッターについてお聞きしたいです。

public class A {

private int data = 10; public int getData(){ return data; } public void setData(int data){ this.data = data; }

}

public class B {

public static void main( String[] args ){ A ref = new A(); ref.setData(40); int i = ref.getData(); System.out.println( i ); System.out.println(★); }

}

これだとiに40が出力されるのはわかるのですが、★にAクラスのint data = 10を出力するにはどうすればいいのでしょうか?
よろしくお願いします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

setData(40)の時点で元のdataの10は上書きされます.
10を出力したいのなら,setDataする前にgetDataするか,別途Aのオブジェクトを作成しなければなりません.

投稿2015/08/18 04:44

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kisaragizinzin7

2015/08/18 08:12

回答ありがとうございます^^ setData(40)すると上書きされてしまうんですね><
guest

0

ベストアンサー

private int data = 10; の10は初期値です。swordoneさんの回答通り、setData(40)で上書きされてしまいます。

初期値の10を使いまわしたいときは、下記のように初期値を示す定数を定義するのもいいでしょう。

java

1public class A { 2 3 public static final int INITIAL_VALUE_OF_DATA = 10; 4 5 private int data = INITIAL_VALUE_OF_DATA; 6 7 public int getData(){ 8 return data; 9 } 10 11 public void setData(int data){ 12 this.data = data; 13 } 14} 15

そうすれば★の位置でSystem.out.println(A. INITIAL_VALUE_OF_DATA);とすることで初期値を表示できますよ。

投稿2015/08/18 04:53

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kisaragizinzin7

2015/08/18 08:15

回答ありがとうございます^^ なるほど! そういった方法があるんですね^^ ありがとうございます。
guest

0

質問の意図がよくわからなかったので、思いつく限りの回答をします。

java

1public class B { 2 3 public static void main( String[] args ){ 4 5 A ref = new A(); 6 7 int j = ref.getData(); 8 System.out.println(j); 9 10 ref.setData(40); 11 12 int i = ref.getData(); 13 System.out.println( i ); 14 } 15}

これなら、10が表示された後、40が表示されるとおもいます。

setDataをした段階で、ref内のdataは40に置き換わっています。
したがって置き換え前のデータを保持する必要があり、このようにするととりだせます。

java

1public class B { 2 3 public static void main( String[] args ){ 4 5 A ref = new A(); 6 7 int j = ref.getData(); 8 9 ref.setData(40); 10 11 int i = ref.getData(); 12 System.out.println( i ); 13 14 System.out.println(j); 15 } 16}

または、別のインスタンスから取り出します。

java

1public class B { 2 3 public static void main( String[] args ){ 4 5 A ref = new A(); 6 7 ref.setData(40); 8 9 int i = ref.getData(); 10 System.out.println( i ); 11 12 ref = new A(); 13 i = ref.getData(); 14 System.out.println(i); 15 } 16}

値をセットしなおす方法もあります。

java

1public class B { 2 3 public static void main( String[] args ){ 4 5 A ref = new A(); 6 7 ref.setData(40); 8 9 int i = ref.getData(); 10 System.out.println( i ); 11 12 ref.setData(10); 13 14 i = ref.getData(); 15 System.out.println( i ); 16 } 17}

投稿2015/08/18 04:52

iwamoto_takaaki

総合スコア2883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kisaragizinzin7

2015/08/18 08:14

回答ありがとうございます^^ コードまで書いていただいてすみません。 参考にさせていただきます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問