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

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

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

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

Q&A

解決済

1回答

322閲覧

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

kumathi

総合スコア7

Java

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

0グッド

1クリップ

投稿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 ); } }

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

java

1 2 public void setWheels( int weels ) 3 { 4 if ( wheels >= 0 ) 5 this.wheels = wheels; 6 }

コンストラクタ内で呼んでるsetWheelsですが、
仮引数のスペルミスにより、クラス内変数をそのまま同じ変数に代入するだけの、無意味な動作になっています。

投稿2022/05/24 14:19

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2022/05/24 16:16

まずユニットテストからしてください、ってトコロですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問