※ ChatGPTを利用し、要約された質問です(原文:メソッドのオーバーライド(java))
メソッドのオーバーライド(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 個
とエラーが出ます。
どうしてでしょうか?
誰か教えてください、お願いします。