だから私はプログラムがなぜそれがそうであるようにコンパイルされているのかを理解しようとしています、うまくいけばあなたたちは私のためにそれを説明することができます。
class Vehicle{
public void drive() throws Exception{
System.out.println("Vehicle running");
}
}
class Car extends Vehicle{
public void drive(){
System.out.println("Car Running");
}
public static void main(String[] args){
Vehicle v = new Car();
Car c = new Car();
Vehicle c2 = (Vehicle) v;
c.drive();
try {
v.drive();
} catch (Exception e) {
e.printStackTrace();
} //try v.drive()
try {
c2.drive();
} catch (Exception e) {
e.printStackTrace();
} //try c2.drive()
}
}
したがって、上記のプログラムの出力は次のようになります。
カーランニング
カーランニング
カーランニング
私の質問は、vおよびc2オブジェクトに対してdrive()メソッドを呼び出すためにtry / catchブロックを実行する必要があるのに、cではないのはなぜですか?それらはすべてCarのインスタンスなので、ここで何が起こっているのでしょうか。