出力はどのようになりますか?どちらのクラスでもクラスが作成されることは疑いの余地があります。私はJavaで新しいので、オブジェクトのインスタンス化のプロセスを簡単に説明してください。 このプログラムでは、出力を150と想定していますが、ans in = s 90となります。 メソッドとデータ変数が違いにアクセスする方法は?以下のコードの違いを説明してください。
プログラム1:
class Bike
{
int speedlimit=90;
}
class Honda3 extends Bike
{
int speedlimit=150;
public static void main(String args[])
{
Bike obj=new Honda3();
System.out.println(obj.speedlimit);//90
}
}
プログラム2:
class Bike
{
int speedlimit=90;
void display()
{
System.out.println(speedlimit);
}
}
class Honda3 extends Bike
{
int speedlimit=150;
void display()
{
System.out.println(speedlimit);
}
public static void main(String args[])
{
Bike obj=new Honda3();
obj.display();
}
}
これら2つのコード間の差分を説明します。 プログラム1では、オブジェクトはHonda3
に対して作成され、タイプBike
のobjに割り当てられます。私はスーパークラスメソッドがどのように実行されるのか理解していませんでしたか?
フィールドは多型ではありません。 'Bike'への参照で' obj.speedlimit'にアクセスすると、 'Bike'の具象サブクラスに' speedlimit'というフィールドがあるかどうかにかかわらず、 'Bike.speedlimit'を取得します。 –