オブジェクトのフィールドのコピーについて

このQ&Aのポイント
  • Javaでオブジェクトのフィールドをコピーする方法を教えてください。
  • クラスの別のオブジェクトの各フィールドの内容を自身のオブジェクトの各フィールドにコピーするプログラムが知りたいです。
  • 具体的には、HumanクラスのcopyDataメソッドでフィールドのコピーを実現したいです。
回答を見る
  • ベストアンサー

オブジェクトのフィールドのコピーについて

下記で作成したプログラムで、Humanクラスの別のオブジェクトの各フィールドの内容を自身のオブジェクトの各フィールドにコピーするpublicメソッドのcopyDataで、「Humanクラスの別のオブジェクトの各フィールドの内容を自身のオブジェクトの各フィールドにコピーする」するプログラムが分かりません。むしろ、知らなくて、もしよければどのようなプログラムになるのか教えてください。 class Human { private double height, weight; private String name; public Human() { height = 0; weight = 0; name = "noname"; } public void inputData(String na, double ht, double wt) { name = na; height = ht; weight = wt; } public void showValue() { System.out.println("名前: " + name + ", 身長: " + height + "cm, 体重:"+ weight + "kg"); } public void copyData(Human a) { } } class KNO1 { public static void main(String args[]) { Human member1,member2,member3; System.out.println("member1:"); member1 = new Human(); member1.inputData("Taro",165.0,55.0); menber1.showValue(); System.out.println("member2:"); menber2 = new Human(); member2 = member1; member2.showValue(); System.out.println("member3:"); member3 = new Human(); member3.copyData(menber1); member3.showValue(); member1.inputData("Hana",175.0,75.0); System.out.println("member1:"); member1.showValue(); System.out.println("member2:"); member2.showValue(); System.out.println("member3:"); member3.showValue(); } }

  • aw345
  • お礼率2% (1/48)
  • Java
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

応用ではないですが、 public void copyData(Human a) { inputData(a.na,a.ht,a.wt) } で良いじゃないですか。 良く分からんのは menber2 = new Human(); member2 = member1; のコードです。member1のインスタンスを渡すのであれば menber2 = new Human(); は不要でしょう。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

わからないのはしょうがないとして, ではどのくらい (時間ではなく質の意味で) 考えた?

aw345
質問者

補足

出題されているプログラムのcopyDataで、「Humanクラスの別のオブジェクトの各フィールドの内容を自身のオブジェクトの各フィールドにコピーする」という意味が分らなかった。

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

この程度がどうしてわからないのか理解できないですが。。。 たった3行加えるだけなのに。 もしかして、あなたは ・クラス ・オブジェクト ・フィールド などの意味さえ知らないのではないですか? だとすると、非常にヤバイですよ。 今なら間に合うから、最初からきちんと勉強をし直した方が、あなたのためです。 ※こんなことを書くと、また「いいから早くコード書け」とか言われるんでしょうかね。  そのコメントは削除されたようですが。  

aw345
質問者

補足

だから、そういわれても分からないの!!!私は基本問題はは分かるけど、応用問題はは分からないの!!!

関連するQ&A

  • 継承プログラムについて 

    下記で作成した継承プログラムで、間違ったプログラムの部分を直しても同じエラーが発生します。どうしたら下記のプログラムがうまく動きますか? ちなみに同じエラーが発生するのはsuper()の部分で、シンボルが見つからないとのこと. class Human { private double height, weight; private String name; private static int count = 0; public Human() { height = 0; weight = 0; name = "no name"; } public void inputData(String na, double ht, double wt) { height = ht; weight = wt; name = na; } public void showValue() { count++; System.out.println("名前: " + name + ", 身長: " + height + "cm, 体重:"+ weight + "kg"); } public void copyData(Human a) { height = a.height; weight = a.weight; name = a.name; } public double readData(double a) { if(a==0){ return height; }else{ return weight; } } public static int readCount() { return count; } } class Sandai extends Human { private String number; public Sandai(String nu, String na, double ht, double wt) { super(na, ht, wt); number = nu; } public void showData() { System.out.println("学籍番号:"+number+", "); showValue(); } } class Kadai12_3 { public static void main(String args[]) { Sandai student = new Sandai("09H099", "Taro", 165.0, 55.0); student.showData(); } }

    • ベストアンサー
    • Java
  • 継承プログラムについて

    下記で作成した継承プログラムで、間違ったプログラムの部分を直しても同じエラーが発生します。どうしたら下記のプログラムがうまく動きますか? ちなみに同じエラーが発生するのはsuper()の部分で、新保ぷが見つからないとのこと。 class Human { private double height, weight; private String name; private static int count = 0; public Human() { height = 0; weight = 0; name = "no name"; } public void inputData(String na, double ht, double wt) { height = ht; weight = wt; name = na; } public void showValue() { count++; System.out.println("名前: " + name + ", 身長: " + height + "cm, 体重:"+ weight + "kg"); } public void copyData(Human a) { height = a.height; weight = a.weight; name = a.name; } public double readData(double a) { if(a==0){ return height; }else{ return weight; } } public static int readCount() { return count; } } class Sandai extends Human { private String number; public Sandai(String nu, String na, double ht, double wt) { super(na, ht, wt); number = nu; } public void showData() { System.out.println("学籍番号:"+number+", "); showValue(); } } class Kadai12_3 { public static void main(String args[]) { Sandai student = new Sandai("09H099", "Taro", 165.0, 55.0); student.showData(); } }

    • ベストアンサー
    • Java
  • オーバーライド

    こんにちは。 javaの勉強をしているのですが コンパイルエラーが発生しました。 オーバーライドのプログラムに関する質問です。 まずはプログラムなんですが class Human{ protected String name; protected int height; protected double weight; public Human(){ name = ""; height = 0; weight = 0.0; } public void setName(String n){ name = n; } public void setHeight(int h){ height = h; } public void setWeight(double w){ weight = w; } public void show(){ System.out.println(name + "の身長は" + height + "cm。体重は" + weight + "kgです。"); } } class Teacher extends Human{ private String cource; public void setCource(String c){ cource = c; } public void show(){ System.out.println("担当科目は" + course + "です。"); } } class Ex73{ public static void main(String args[]){ Student human1 = new Student(); human1.setName("一郎"); human1.setHeight(164); human1.setWeight(62.5); human1.setCourse("java"); human1.show(); } } /* Ex73.java:35: シンボルを解決できません。 シンボル: 変数 course 場所 : Teacher の クラス System.out.println("担当科目は" + course + "です。"); ^ Ex73.java:47: シンボルを解決できません。 シンボル: メソッド setCourse (java.lang.String) 場所 : Student の クラス human1.setCourse("java"); */ このプログラムは TeacherクラスでHumanクラスのshow()メソッドをオーバーライドすると言うものです。 どなたかよろしくお願いします。

    • ベストアンサー
    • Java
  • オブジェクトクラスとオーバースライド

    Objectクラスを継承させてオーバースライドさせるプログラムを下記に作成したのですがSandaiクラスのオブジェクトstudent[1]の.student[1].inputNumber("09H999");が「シンボルが見つかりません」とエラーが表示されます。これはどこが足りないのですか?ご連絡をお願いします。 結果   student[0]: 身長: 180.2 cm, 体重: 70.3kg   student[0] はclass Personです   student[1]: 学籍番号:09H999, 身長: 168.3 cm, 体重: 55.2kg   student[1] はclass Sandaiです class Person { private double height, weight; public void inputData(double ht, double wt) { height = ht; weight = wt; } public void showData() { System.out.println("身長: " + height + "cm, 体重:"+ weight + "kg"); } } class Sandai extends Person { private String number; public void inputNumber(String num) { number=num; } public void showData() { System.out.print("学籍番号:"+number+", "); super.showData(); } } class K13_2 { public static void main(String args[]) { Person student[] = new Person[2]; student[0] = new Person(); student[0].inputData(180.2, 70.3); student[1] = new Sandai(); student[1].inputData(168.3, 55.2); student[1].inputNumber("09H999"); for(int i=0; i<student.length; i++){ System.out.print("student["+(i)+"]:"); student[i].showData(); Class c1 = student[i].getClass(); System.out.println("student["+(i)+"]は"+c1+"です。"); } } }

    • ベストアンサー
    • Java
  • JAVAのComparableについて・・・

    compareto()を使って名前、身長、体重を「身長昇順」拡張for文でだしたいのですが・・・ (1)returnを使って何を返せばいいのか? (2)System.out.println()でなにをすればいいのか? (3)他の文で間違っているのか? この3点が分かりません。JAVAに詳しい方よろしくお願いします。。。 package class; public class NewClass { public static void main(String[] args) { NewClass2 A = new NewClass2("aaa", 160, 40); NewClass2 B = new NewClass2("bbb", 170, 60); NewClass2 C = new NewClass2("ccc", 150, 70); System.out.println("---Comparable---"); Set<Comparable> ts3 = new TreeSet<Comparable>(); ts3.add(A); ts3.add(B); ts3.add(C); for(Comparable cm : ts3) { System.out.println(?????????????); } package class; public class NewClass2 implements Comparable< NewClass2> { private String name; private int Weight; private int Height; public String getName() { return this.name; } public void setName(String name) { this.name = name; } public int getWeight() { return this.Weight; } public void setWeight(int Weight) { this.Weight = Weight; } public int getHeight() { return this.Height; } public void setHeight(int Height) { this.Height = Height; } public StudentBean(String name, int Height, int Weight) { this.name = name; this.Weight = Weight; this.Height = Height; } @Override public int compareTo(Object arg0) { StudentBean sb = (StudentBean)arg0;     String name1 = this.name; int Height1 = this.Height; int Weight1 = this.Weight;     int returnval = 0; if(Height1 > sb.getHeight()) { returnval = 1; } else if(Height1 < sb.getHeight()) { returnval = -1; } else returnval = 0; } return ???????; } 文は以上です 出力は aaa 160 40 ・ ・ ・ なかんじでお願いします。

  • JAVAのComparableについて・・・

    compareto()を使って名前、身長、体重を「身長昇順」拡張for文でだしたいのですが・・・ (1)returnを使って何を返せばいいのか? (2)System.out.println()でなにをすればいいのか? (3)他の文で間違っているのか? この3点が分かりません。JAVAに詳しい方よろしくお願いします。。。 package class; public class NewClass { public static void main(String[] args) { NewClass2 A = new NewClass2("aaa", 160, 40); NewClass2 B = new NewClass2("bbb", 170, 60); NewClass2 C = new NewClass2("ccc", 150, 70); System.out.println("---Comparable---"); Set<Comparable> ts3 = new TreeSet<Comparable>(); ts3.add(A); ts3.add(B); ts3.add(C); for(Comparable cm : ts3) { System.out.println(?????????????); } package class; public class NewClass2 implements Comparable< NewClass2> { private String name; private int Weight; private int Height; public String getName() { return this.name; } public void setName(String name) { this.name = name; } public int getWeight() { return this.Weight; } public void setWeight(int Weight) { this.Weight = Weight; } public int getHeight() { return this.Height; } public void setHeight(int Height) { this.Height = Height; } public StudentBean(String name, int Height, int Weight) { this.name = name; this.Weight = Weight; this.Height = Height; } @Override public int compareTo(Object arg0) { StudentBean sb = (StudentBean)arg0;     String name1 = this.name; int Height1 = this.Height; int Weight1 = this.Weight;     int returnval = 0; if(Height1 > sb.getHeight()) { returnval = 1; } else if(Height1 < sb.getHeight()) { returnval = -1; } else returnval = 0; } return ???????; } 文は以上です 出力は aaa 160 40 ・ ・ ・ なかんじでお願いします。

  • objectクラスの継承

    下記の手順でobjectクラスの継承のプログラムを作成したのですが、作成する際に(1)の条件プログラムと(3)のプログラム内容、つまり意味が分かりません。これはどのようなプログラムにしたら一番いいですか?至急連絡をください。 手順 (1)Personオブジェクトの身長と体重の数値が両方とも一致していればtrue、そうでなければfalseをか    えすように、equals()をオ ーバーライドする。 (2)main内で、Personクラスのstudent1、student2、student3オブジェクトを用意する。 (3)student1、student2は独立に用意し、同じ数値を代入する。student3にはstudent1を代入する。 (4)student1とstudent2に対してequals()メソッドを適用する。 (5)student1とstudent3に対してequals()メソッドを適用する 結果 student1とstudent2の内容が同じかどうか調べたところtrueでした。 student1とstudent3の内容が同じかどうか調べたところtrueでした。 class Person { private double height, weight; public void inputData(double ht, double wt) { height = ht; weight = wt; } public void showData() { System.out.println("身長: " + height + "cm, 体重:"+ weight + "kg"); } } class K4 { public static void main(String args[]) { Person student1 = new Person(); Person student2 = new Person(); Person student3 = new Person(); student3 = student1; boolean bl1 = student1.equals(student2); boolean bl2 = student1.equals(student3); System.out.println("student1とstudent2の内容が同じかどうか調べたところ"+bl1+"でした。"); System.out.println("student1とstudent3の内容が同じかどうか調べたところ"+bl2+"でした。"); } }

    • ベストアンサー
    • Java
  • 可変長配列に格納されたオブジェクトの参照

    「name」、「sex」などのデータがあり、 そのデータをHumanオブジェクトとして、可変長配列(humanArray)に格納してあります。 humanArray.add( new Human( name, sex ) );  // このような感じでしょうか。 標準入力から「name」が入力されると、オブジェクトを参照し、 HumanArrayに格納されているHumanオブジェクトの「name」データを一つ一つ比較して、 一致したら配列の要素をすべて出力する。 というプログラムを作りたいのです。 問題としているのは、 一致するかの照合処理を別のクラスで行うので、 nameを処理を行うクラスに渡す必要がありますが、 可変長配列のi番地に入っているオブジェクトのnameを 得るための方法がわかりません。 Humanクラスに public static String throwName() { return name; } のようなクラスを作って、 処理を行うクラスで、 String name = humanArray.get(i).throwCode(); というような処理を行うイメージなのですが・・・。 どのようにすれば良いのかご教授ください。 どのように質問をすれば良いのかも良くわからないので情報が少ないやもしれません その時は遠慮なく「追加情報が欲しい。」と仰ってください。 例 -----配列の内容----- 阿部 男 -------------------- 馬場 女 -------------------- 千葉 女 -------------------- 標準入力:馬場(name) -------Humanクラスの内容-------- class Human { private String name; private String sex; public Human( String nm, String s ) { name = nm; sex = s; } public static void showArticle() { System.out.println(name); System.out.println(sex); } }

    • ベストアンサー
    • Java
  • オーバーライドとobjectクラスの継承(2)

    下記の手順でobjectクラスの継承をオーバーライドさせるプログラムを下記に作成したのですが、student[1].inputNumber("09H999");の部分がエラーになります。下記の手順で下記の結果を表示させる、つまり 動かすにはどこを修正・追加したらいいのですか?至急ご連絡をください。 手順 (1)main内で、studentをPersonクラスの配列変数として宣言する。要素は2つ用意する。 (2)student[0]をPersonクラスのオブジェクトとして作成し、身長、体重の値をstudent[0]にinputDataを用いて代入する(キー ボードから入力する必要はない)。 (3)student[1]をSandaiクラスのオブジェクトとして作成し、学籍番号、身長、体重の値をstudent[1]にinputDataと inputNumberを用いて代入する(キーボードから入力する必要はない)。 (4)studentのそれぞれのオブジェクトの内容を、forループを用いてshowDataを使い表示する。 (5)のループ内でstudent のそれぞれのオブジェクトのクラス名を表示する。 結果 student[0]: 身長: 180.2 cm, 体重: 70.3kg student[0] はclass Personです student[1]: 学籍番号:09H999, 身長: 168.3 cm, 体重: 55.2kg student[1] はclass Sandaiです class Person { private double height, weight; public void inputData(double ht, double wt) { height = ht; weight = wt; } public void showData() { System.out.println("身長: " + height + "cm, 体重:"+ weight + "kg"); } } class Sandai extends Person { private String number; public void inputNumber(String num) { number=num; } public void showData() { System.out.print("学籍番号:"+number+", "); super.showData(); } } class K2 { public static void main(String args[]) { Person student[] = new Person[2]; student[0] = new Person(); student[0].inputData(180.2, 70.3); student[1] = new Sandai(); student[1].inputData(168.3, 55.2); student[1].inputNumber("09H999"); for(int i=0; i<student.length; i++){ System.out.print("student["+(i)+"]:"); student[i].showData(); Class c1 = student[i].getClass(); System.out.println("student["+(i)+"]は"+c1+"です。"); } } }

    • ベストアンサー
    • Java
  • privateなフィールドは継承されない?

    たとえば、 class A { private int width; public A(){ this.width=3; } public int getWidth(){ return width; } public void setWidth(int width){ this.width=width; } } -------------------------------- class B extends A { String name; public B(){ this.name="あきら"; } } -------------------------------- class TestAB{ public static void main(String[] args){ B b = new B(); B b2= new B(); System.out.println(b.getWidth()); b2.setWidth(5); System.out.println(b2.getWidth()); System.out.println(b.getWidth()); } } というのがあったとして、ある参考書では「privateなフィールドは継承されない」と書いてありました。 でも、これってwidthに直接アクセスして値を変更できないだけであって、 widthは継承されてるのではないですか? B型のb専用、b2専用のwidthがあるのではないですか? ちょっと頭がこんがらがってきました。。

    • ベストアンサー
    • Java

専門家に質問してみよう