• ベストアンサー

問題文の意味が分かりません。

こんにちは。 早速ですが、質問させていただきます。 javaの勉強をしているのですが、タイトル通り問題文の意味が分かりません。 問題文 Ex44の課題ではメソッドのオーバーロードをしたがこれをコンストラクタにしなさい。 (クラスはPersonとする)オブジェクトはa1,b1,a2,b2,a3,b3として作成する。 a1を作成するときに、"Tom"を引数とする b1を作成するときに、"Bill"を引数とする a2を作成するときに、50.5を引数とする Ex44の課題 class Person2{ private String name; private double weight; public void SetPerson(){ name = "未設定"; weight = 0.0; } public void SetPerson(String n){ name = n; weight = 0.0; } public void SetPerson(String n, double w){ name = n; weight = w; } public void show(){ System.out.println("nameは、" + name + "です。weightは" + weight + "です。"); } } class Ex44{ public static void main(String args[]){ Person2 person1 = new Person2(); person1.SetPerson(); person1.show(); person1.SetPerson("田中"); person1.show(); person1.SetPerson("田村", 60.0); person1.show(); } } コンストラクタの意味自体は分かっているのですが、 a1,b1,a2,b2,a3,b3というところと a1を作成するとき、"Tom"を引数とする b1を… a2を… というところがいまいち何を言っているのか分かりません。 どなたか分かりますでしょうか。 よろしくお願いします。

noname#39315
noname#39315
  • Java
  • 回答数2
  • ありがとう数5

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

  • ベストアンサー
  • mikaemi
  • ベストアンサー率50% (33/65)
回答No.2

たぶん、  public Person()  public Person(String)  public Person(String, double) という引数を持つコンストラクタを定義して、 それらを使って  a1 = new Person("Tom");  b1 = new Person("Bill");  a2 = new Person("", 50.5); などとしなさい。って意味ではないですかね?^^ public Person(double) のシグニチャのコンストラクタも 定義するのかな?

noname#39315
質問者

お礼

早速のご回答ありがとうございました。 問題文のいっていることが理解できない部分が解消できてスッキリしました^^ ご回答ありがとうございました!!

その他の回答 (1)

回答No.1

コンストラクタにもメソッドと同じように引数のあるタイプがあり、引数の種類も違います。これをコンストラクタのオーバーロードといいますね。 Person a1 = new Person("Tom"); Person b1 = .... こういうことと思います。

noname#39315
質問者

お礼

早速のご回答ありがとうございました。 やっと理解することができました。 いったいb2,a3,b3は何の必要があるのだろうと悩んでいたのですが 与えられたプリントが2枚組み(1枚目で問題文が切れていた状態) だということに、質問した後気づきました…。 ご回答ありがとうございました^^

関連するQ&A

  • 問題文の理解が出来ません

    こんにちは。 javaの勉強をやっているのですが 問題文が理解できないため先へ進めない状況です。 以下のクラス図に従いCarクラスとTruckクラスを作成 質問文ですがそのつど「」でお聞きします。 Car74(スーパークラス) ------------- -name:String -mieage:long -engineSound:String ------------ +Car74(name:String,mileage:long,engineSound:String) +startEngine():void{final} +getEngineSound():String +show():void Truck(サブクラス) -loadage:int ---------------- +Truck(name:String,mileage:long,loadage:int,engineSound:String) +getEngineSound():String +show():void [Car74クラス] startEngine()メソッドはオーバーライドできない(final) getEngineSound()メソッドから得るエンジン音を6回表示 getEngineSound()メソッドはString型のエンジン音を返す show()メソッドでは名称、走行距離を表示 [Truckクラス] Car74クラスのサブクラスでloadageは積載量が入る コンストラクタでは、3つの引数をとり「名称、走行距離、エンジン音ですよね」nameとmileageを引数としてsuperクラスのコンストラクタを呼びもうひとつの引数loadageはこのクラスフィールドに代入する「クラスフィールドに代入とはなんでしょうか」 getEngineSound()メソッドではString型のエンジン音を返す(消音装置つきなのでもとの50パーセントの文字数になる) show()メソッドでは名称と走行距離の表示はsuperクラスで行いこのメソッドでは積載量を表示。 [Ex74クラス(main()メソッド)] メインメソッドでCar74オブジェクトをひとつ作りコンストラクタで 名称と走行距離とエンジン音の値を設定する さらに、Truckオブジェクトを一つ作りコンストラクタでは名称と走行距離とエンジン音の値を引数にsuperクラスのコンストラクタを呼び積載量の値はここで設定「そのままloadage=5と入力してOKでしょうか」。 startEngine()メソッドとshow()メソッドを呼んで以下のように表示 名称はPORSCHE,走行距離は10000です。 ババババ ババババ ババババ ババババ ババババ ババババ 名称はキャンター走行距離は20000 積載量は5t ドド ドド ドド ドド ドド ドド 途中経過 class Car74{ private String name; private long mileage; private String Sound; public Car74(String n, long m, String s){ name = n; mileage = m; Sound = s; show(); } public void show(){ System.out.println("名称は" + name + "、 走行距離は" + mileage); } } class Truck extends Car74{ int loadage; public Truck(String n, long m, String s){ super(n, m); loadage = 5; } public String getEngineSound(String sound){ //50パーセントの音 return sound; } public void show(){ System.out.println("積載量は" + loadage); } } class Ex74{ public static void main(String args[]){ Car74 car = new Car74("PORSCHE", 100000, "ババババババババ"); Truck truck = new Truck("キャンター", 20000, "ドドドド"); } } +Truck(name:String,mileage:long,loadage:int,engineSound:String) ちなみに↑これはどうやって記述したらよいかわかりません。 どなたかよろしくお願いします。

    • ベストアンサー
    • Java
  • javaのEclipseの問題がわからない

    Human.javaで記述されたクラスを継承し、継承したクラスをインスタンス化して、利用できるHumanクラスのメンバをすべて使用するプログラムを作成せよ。クラス名は、継承したクラスをPerson とし、そのクラスをインスタンス化するクラスをQuestion13_1として、実行結果も記述すること public class Human { private String name = "デフォルトの名前"; protected int age = 22; public int height = 170; final public int weight = 55; public String GetName(){ return name; } public void setName(String name){ this.name = name; } } 結果何を出せば良いのわかりません。

  • オーバーライド

    こんにちは。 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
  • 継承プログラムについて

    下記で作成した継承プログラムで、間違ったプログラムの部分を直しても同じエラーが発生します。どうしたら下記のプログラムがうまく動きますか? ちなみに同じエラーが発生するのは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
  • Eclipseが解りません。

    ファイル名はPerson.javaです。 F11などその他を実行しましたが 以下の問題が検出されました。 javax.xml.ws org.apache.xmlrpc と出ました。 どこが間違っているのでしょうか? アドバイスのほどよろしくお願いいたします。 public class Person { private int age; private double weight; private double height; public Person(int age, double weight, double height) { this.age = age; this.weight = weight; this.height = height; } public void show() { System.out.println("年齢は" + age + "体重は" + weight + "身長は"+ height +"です。" ); } } public class Person { private int age; private double weight; private double height; public Person(int age, double weight, double height) { this.age = age; this.weight = weight; this.height = height; } public void show() { System.out.println("年齢は" + age + "体重は" + weight + "身長は"+ height +"です。" ); } }

    • ベストアンサー
    • Java
  • コンポジション コンストラクタに引数がある場合

    class Person{ public String name_; public int age_; public Person(String n,int a){ name_ = n; age_ = a; } } class Student{ public Person person_; public int grade_; public Student(Person p,int g){ person_ = new Person("MOTO",2); grade_ = g; } } public class Samconp2{ public static void main(String[] args){ Student asaya_ = new Student(p,0); } System.out.println(asaya_.person_.name+asaya_.person_.age_+asaya_.grade__); } 3のプログラムを見るようにコンストラクタに引数使い、又継承を使わないでPerson クラスのname_ age_ それを拡張したStudetクラスのgrade_をmain関数で表したいのですが(希望としてはname_ "Moto" age_ 2 grade_ 0) 結果としては、System.out.println(asaya_.personn_.name_ + asaya_.person_.age_ +asaya_grade_);で<identifierがありません>となります。 まだ初心者で良く分りません。解決方法をお願いします。

    • ベストアンサー
    • Java
  • 実引数リストと仮引数リストの長さが異なります

    実引数と仮引数はあっているはずですが、次のエラーが出ます。どうしてでしょうか? ------エラー----------------------- java: クラス Itemのコンストラクタ Itemは指定された型に適用できません。 期待値: 引数がありません 検出値: java.lang.String,int,java.util.Date 理由: 実引数リストと仮引数リストの長さが異なります -------------------------------------------------- public class Main { public static void main(String[] args) { String name= "test"; int price = 0; Date date = new Date(); Item item = new Item(name,price,date);//コンストラクタ実引数 } } class Item{ String name; int price; Date date; void Item(String name, int price, Date date)//コンストラクタ仮引数 { this.name = name; this.price = price; this.date = date; } }

    • ベストアンサー
    • 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 ・ ・ ・ なかんじでお願いします。

専門家に質問してみよう