解説1行目でCarクラスを継承しています。これにより、Carクラスが持っているspeedUpメソッド、speedDownメソッドが使えるようになります。3行目のフィールド変数は売上金額を扱います。乗客が乗車するたびに加算されていきます。このフィールドはprivate修飾子がついているので、設定はクラス内部からしかできないようになっています。値を取得するには54行目から定義されているgetSalesAmount()メソッドを利用します。4行目のフィールド変数は現在の乗客数を扱います。今回は50人まで乗せられるようにプログラムで制御しています。このフィールドも設定はクラス内部からしかできないようになっています。取得するには58行目から定義されているgetPassengerNumber()メソッドを利用します。7~9行目ではコンストラクタを定義しています。このコンストラクタは引数なしで呼ばれると、オーバーロードしているガソリン量を受け取るコンストラクタを呼び出します。11~15行目では、ガソリン量を受け取るコンストラクタを定義しています。12行目はスーパークラスのコンストラクタを呼び出しています。「super」キーワードは、スーパークラスを表します。ここでのsuperキーワードはCarクラスを表します。19~34行目は乗車するメソッドです。このメソッドは運賃を受け取り、乗車処理をします。その際、バスが走っていたり、乗客数が満員になっていたりすると乗車できないようにしています。いずれにも当てはまらない場合は、受け取った運賃を売上金額フィールドに加算し、乗客数フィールドを1人分増やします。37~51行目は降車するメソッドです。バスが走っていたり、乗客がいない場合は降車できないようにしています。いずれにも当てはまらない場合は、乗客数フィールドを1人分減らします。ファイルRun1.javaをコピーして、次のようにファイルを作成してください。プログラム次のようにプログラムを記述してください。解説14行目でBusオブジェクトを生成しています。BusオブジェクトはCarクラスを継承しているので今まで通り加速したり、減速したりできます。46行目では乗車メソッドを呼び出しています。戻り値がnullでない場合はエラーメッセージが返って来ているので、コンソールに表示しています。55行目では降車メソッドを呼び出しています。このメソッドは乗車メソッドと同様にエラーメッセージかnullが返ってくるのでそれに応じた処理をしています。今回はCarクラスを基にBusクラスを作成しました。BusクラスはCarクラスを継承しているので、Carクラスのメンバを記述しなくても使用することができます。privateになっているメンバは、継承したクラスでも直接アクセスすることができません。「protected」にすれば、直接操作できます。「protected」は、継承関係であればアクセスできますが、外部クラスからはアクセスすることができません。Javaでは、サブクラスは1つのクラスから継承することができます。複数のクラスから継承させることはできません。(多重継承の禁止)BusクラスのイメージBusクラスのインスタンスを生成するときにBusクラスのコンストラクタを呼び出します。すると、初めにスーパークラスであるCarクラスのコンストラクタを呼び出します。サブクラスのコンストラクタでスーパークラスのコンストラクタの呼び出しが特に記述されていない場合、スーパークラスのデフォルトコンストラクタが呼び出されます。スーパークラスで引数を持つコンストラクタが定義されていると、デフォルトコンストラクタは仮定されないので、サブクラスでスーパークラスのコンストラクタの呼び出しを記述しなければなりません。