質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

解決済

サブクラスがクライアントクラスに反映されない

kumathi
kumathi

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1回答

0評価

1クリップ

143閲覧

投稿2022/05/24 13:51

イメージ説明素人質問で申し訳ないです。車両をカプセル化する抽象的なスーパークラス(Vehicle.java)、車両には、所有者の名前と車輪の数。 このクラスには、2つの非抽象サブクラスがあります。1つは自転車をカプセル化する(Bicycle.java)、もう1つは自動車をカプセル化する(Motorizedvehicle.java)、この自動車のクラスには、エンジン排気量(リットル)。 馬力の測定値を計算して返す方法、リットル数×車輪数。 これら2つのクラスをテストするためのクライアントクラス(VehicleClient.java)を作りました。しかし
、クライアントクラスが実行されると、コンパイルと実行時にエラーは発生しませんが、画像の通り車輪の数が0になってします。Motorizedvehicleオブジェクトの結果は正しくないようです。どなたかなぜかわかる方いらっしゃいますでしょうか。
以下ソースコードになります。

親クラス public abstract class Vehicle { private String owner; private int wheels; public Vehicle( String owner, int wheels ) { setOwner( owner ); setWheels( wheels ); } public String getOwner( ) { return owner; } public int getWheels( ) { return wheels; } public void setOwner( String owner ) { this.owner = owner; } public void setWheels( int weels ) { if ( wheels >= 0 ) this.wheels = wheels; } public String toString( ) { return( "Owner: " + owner + "; number of wheels: " + wheels ); } public boolean equals( Object o ) { if ( ! ( o instanceof Vehicle ) ) return false; else { Vehicle v = (Vehicle) o; return ( owner.equalsIgnoreCase( v.owner ) && wheels == v.wheels ); } } }
子クラス(自動車)public class MotorizedVehicle extends Vehicle { private double volumeDisplacement; public MotorizedVehicle( String owner, int wheels, double volumeDisplacement ) { super( owner, wheels ); setVolumeDisplacement( volumeDisplacement ); } public double getVolumeDisplacement( ) { return volumeDisplacement; } public void setVolumeDisplacement( double volumeDisplacement ) { if ( volumeDisplacement >= 0 ) this.volumeDisplacement = volumeDisplacement; } public String toString( ) { return( super.toString( ) + "; volume displacement: " + volumeDisplacement ); } public boolean equals( Object o ) { if ( ! ( o instanceof MotorizedVehicle ) ) return false; else { MotorizedVehicle mv = (MotorizedVehicle) o; return ( super.equals( mv ) && Math.abs( volumeDisplacement - mv.volumeDisplacement ) < 0.0001 ); } } public double horsePower( ) { return ( volumeDisplacement * getWheels( ) ); } }
子クラス(二輪車) public class Bicycle extends Vehicle { public Bicycle( String owner, int wheels ) { super( owner, wheels ); } }
クライアントクラス public class VehicleClient { public static void main( String [] args ) { // Line below would generate a compiler error // Vehicle v = new Vehicle( "John", 4 ); MotorizedVehicle mv1 = new MotorizedVehicle( "Mike", 4, 3.2 ); MotorizedVehicle mv2 = new MotorizedVehicle( "Sarah", 4, 4.0 ); System.out.println( mv1 + " has " + mv1.horsePower( ) + " horsepower " ); mv2.setOwner( mv1.getOwner( ) ); if ( mv1.equals( mv2 ) ) System.out.println( "mv1 and mv2 are equal" ); else System.out.println( "mv1 and mv2 are not equal" ); mv2.setVolumeDisplacement( mv1.getVolumeDisplacement( ) ); if ( mv1.equals( mv2 ) ) System.out.println( "mv1 and mv2 are now equal" ); else System.out.println( "mv1 and mv2 are still not equal" ); Bicycle b2 = new Bicycle( "Jane", 2 ); System.out.println( "\nb2 is " + b2 ); } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。