なぜエラーとなるのかがわからない
Q&A
Closed
以下3つのプログラムを実行したところ、エラーメッセージが出ました。
/* Person.java */
public class Person {
protected String name;
public Person(String name) {
this.name = name;
}
public void hello() {
System.out.println("こんにちは," + name + "です.");
}
public void bye() {
System.out.println("さよなら.");
}
}
/* SalesPerson.java */
public class SalesPerson extends Person {
public SalesPerson(String name) {
super(name);
}
public void bye() {
System.out.println(name + "が担当しました.失礼します.");
}
public void thanks() {
System.out.println("ありがとうございました.");
}
}
/* TestPersons.java に保存 */
public class TestPersons {
public static void main(String args[]) {
Person taro = new Person("太郎");
taro.hello();
taro.bye();
SalesPerson ichiro = new SalesPerson("一郎");
ichiro.hello();
ichiro.thanks();
ichiro.bye();
Person p = ichiro;
p.hello();
p.thanks();
p.bye();
SalesPerson sp = taro;
}
}
エラーメッセージ
~/java$ javac TestPersons.java
TestPersons.java:14: エラー: シンボルを見つけられません
p.thanks();
^
シンボル: メソッド thanks()
場所: タイプPersonの変数 p
TestPersons.java:17: エラー: 不適合な型: PersonをSalesPersonに変換できません:
SalesPerson sp = taro;
^
エラー2個
上記のようなエラーメッセージが出たので、一応エラー部分の二箇所を消してみたら、
きちんと実行できました。
~/java$ java TestPersons
こんにちは,太郎です.
さよなら.
こんにちは,一郎です.
ありがとうございました.
一郎が担当しました.失礼します.
こんにちは,一郎です.
一郎が担当しました.失礼します.
しかし、なぜ、その二箇所がエラーの原因となっているのかがよくわかりませんでした。
プログラムできただけでは意味がないので、教えてくれるととても助かります。
0