Javaプログラムのオーバーライドに関する質問

このQ&Aのポイント
  • Javaの勉強をしている中で、コンパイルエラーが発生しました。TeacherクラスでHumanクラスのshow()メソッドをオーバーライドするプログラムです。
  • プログラム内では、HumanクラスとTeacherクラスが定義されています。Teacherクラスでは、担当科目を表す変数courceと、それを表示するshow()メソッドが追加されています。
  • しかし、コンパイルするとシンボルが解決できないエラーが発生してしまいます。Teacherクラスのshow()メソッドで変数courseを使用しているため、解決できません。また、StudentクラスでsetCourse()メソッドを呼び出していますが、メソッドも解決できません。
回答を見る
  • ベストアンサー

オーバーライド

こんにちは。 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()メソッドをオーバーライドすると言うものです。 どなたかよろしくお願いします。

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

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

  • ベストアンサー
noname#49428
noname#49428
回答No.1

こう、しょっちゅう質問がくると 本当に自分で考えてるのかと思ってしまいますね。 >cource >course つづりが間違ってますよ。 まずは、基本からもっとやるべきではないですか。 基礎のないところにビルは建ちませんよ。

noname#39315
質問者

お礼

ご覧頂きありがとうございます。 綴りだけは間違わないよう努力していきたいとおもいます。 ご回答ありがとうございました^^

関連する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
  • オーバーライドと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
  • オブジェクトのフィールドのコピーについて

    下記で作成したプログラムで、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(); } }

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

  • メソッドのオーバーライド(java)

    class A3{ void hello(){ System.out.println("A3"); } void hello(int i){ System.out.println("A3"+i); } } class B3 extends A3{ void hello(){ System.out.println("B3"); } } class C3 extends B3{ void hello(String s){ System.out.println("C3"+s); } } class MethodOverriding3{ public static void main(String args[]){ A3 obj = new C3(); obj.hello(); } } 上のプログラムを実行すると"B3"と表示されまが、どうしてクラスBのメソッドが実行されるのでしょうか? クラスAのメソッドが無視される仕組みがわかりません。 また、クラスMethodOverriding3でobj.hello("abc")としてコンパイルすると mo.java:25: シンボルを見つけられません。 シンボル: メソッド hello(java.lang.String) 場所 : A3 の クラス obj.hello("abc");   ^ エラー 1 個 とエラーが出ます。 どうしてでしょうか? 誰か教えてください、お願いします。

    • ベストアンサー
    • 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
  • 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