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

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

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

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

Q&A

解決済

2回答

1359閲覧

抽象クラスの実装について

icecleam

総合スコア46

Java

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

0グッド

0クリップ

投稿2020/08/31 14:37

下記のソースをコマンドラインで実行した時に以下のような結果を得られるように実装したいのですが、以下のようなエラーが出てしまいます。
どのように対処すればよいでしょうか。
また、AbstractWashingMachineMain.javaには変更は加えません。

得たい結果

全自動洗濯機 AWM100PX は洗濯槽で洗濯します。
全自動洗濯機 AWM100PX は洗濯槽で脱水します。
全自動洗濯機 AWM100PX は乾燥機能を備えていません!!
乾燥機付き洗濯機 WD200RX は洗濯槽で洗濯します。
乾燥機付き洗濯機 WD200RX は洗濯槽で脱水します。
乾燥機付き洗濯機 WD200RX は洗濯槽で乾燥します。


エラー内容

AbstractWashingMachine.java:39: エラー: クラス AbstractWashingMachineのコンストラクタ AbstractWashingMachineは指定された型に適用できません。
public WasherDryer(){
^
期待値: String
検出値: 引数がありません
理由: 実引数リストと仮引数リストの長さが異なります
AbstractWashingMachine.java:45: エラー: クラス AbstractWashingMachineのコンストラクタ AbstractWashingMachineは指定された型に適用できません。
public AutomaticWashingMachine(){
^
期待値: String
検出値: 引数がありません
理由: 実引数リストと仮引数リストの長さが異なります
AbstractWashingMachineMain.java:7: エラー: クラス AutomaticWashingMachineのコンストラクタ AutomaticWashingMachineは指定された型に適用できません。
AbstractWashingMachine awm100px = new AutomaticWashingMachine("AWM100PX");
^
期待値: 引数がありません
検出値: String
理由: 実引数リストと仮引数リストの長さが異なります
AbstractWashingMachineMain.java:9: エラー: クラス WasherDryerのコンストラクタ WasherDryerは指定された型に適用できません。
WasherDryer wd200rx = new WasherDryer("WD200RX");
^
期待値: 引数がありません
検出値: String
理由: 実引数リストと仮引数リストの長さが異なります
エラー4個


AbstractWashingMachine.java

abstract class AbstractWashingMachine { private String modelNumber; public AbstractWashingMachine(String modelNumber) { this.modelNumber = modelNumber; } public String getModelNumber() { return modelNumber; } public void washCycle( ){ machineWash( ); spinDry( ); dry( ); } public void machineWash( ){ System.out.println("全自動洗濯機" + modelNumber + "は洗濯槽で洗濯します。"); } public void spinDry( ){ System.out.println("全自動洗濯機" + modelNumber + "は洗濯槽で脱水します。"); } public void dry( ){ System.out.println("全自動洗濯機" + modelNumber + "は洗濯槽で乾燥します。"); } } class WasherDryer extends AbstractWashingMachine { //コンストラクタ public WasherDryer(){ } } class AutomaticWashingMachine extends AbstractWashingMachine { //コンストラクタ public AutomaticWashingMachine(){ } }

AbstractWashingMachineMain.java

java

1public class AbstractWashingMachineMain { 2 public static void main(String[] args) { 3 // 全自動洗濯機「AWM100PX」インスタンスを生成。 4 AbstractWashingMachine awm100px = new AutomaticWashingMachine("AWM100PX"); 5 // 乾燥機付き洗濯機「WD200RX」インスタンスを生成。 6 WasherDryer wd200rx = new WasherDryer("WD200RX"); 7 // AWM100PXで洗濯する。 8 awm100px.washCycle(); 9 // WD200RXで洗濯する。 10 wd200rx.washCycle(); 11 } 12}

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

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

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

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

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

guest

回答2

0

子クラスのコンストラクタで、親クラスのコンストラクタを呼んでないので
自動的に親クラスの引数のないコンストラクタを呼ぼうとします。
が、親クラスに引数ありのコンストラクタしかないのでエラーになります。

投稿2020/08/31 15:05

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

dameo

2020/09/02 09:56

すみませんが、現象の説明として不適切なので、低評価しました。
guest

0

ベストアンサー

問題はここです。

Java

1// 全自動洗濯機「AWM100PX」インスタンスを生成。 2 AbstractWashingMachine awm100px = new AutomaticWashingMachine("AWM100PX");

クラスをnewしているときに、文字列引数を渡していますが
それを受けるコンストラクタがいません。

Java

1class AutomaticWashingMachine extends AbstractWashingMachine { 2 //コンストラクタ 3 public AutomaticWashingMachine(){ 4 } 5}

継承元に

Java

1 public AbstractWashingMachine(String modelNumber) { 2 this.modelNumber = modelNumber; 3 }

がいるから処理してくれると思ったのでしょうか?この場合呼ばれません。

AutomaticWashingMachineクラスにString引数のコンストラクタを
追加してみてはどうでしょうか。

Java

1class AutomaticWashingMachine extends AbstractWashingMachine { 2 //コンストラクタ 3 public AutomaticWashingMachine(){ 4 } 5 //コンストラクタ 6  // ご指摘がありtypoを修正。(poblic→public) 7 public AutomaticWashingMachine(String moduleNumber){ 8 //親クラスのコンストラクタを呼ぶ 9 super(moduleNumber); 10 } 11}

投稿2020/08/31 15:04

編集2020/09/01 13:13
kay-ws

総合スコア105

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

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

icecleam

2020/08/31 15:27

ご回答ありがとうございます。 以下のように記載したのですが、次のようなエラーが出てしまいました。。 エラー内容 ----- AbstractWashingMachine.java:48: エラー: シンボルを見つけられません poblic AutomaticWashingMachine(String modelNumber){ ^ シンボル: クラス poblic 場所: クラス AutomaticWashingMachine AbstractWashingMachine.java:39: エラー: クラス AbstractWashingMachineのコンストラクタ AbstractWashingMachineは指定された型に適用できません。 public WasherDryer(){ ^ 期待値: String 検出値: 引数がありません 理由: 実引数リストと仮引数リストの長さが異なります AbstractWashingMachine.java:45: エラー: クラス AbstractWashingMachineのコンストラクタ AbstractWashingMachineは指定された型に適用できません。 public AutomaticWashingMachine(){ ^ 期待値: String 検出値: 引数がありません 理由: 実引数リストと仮引数リストの長さが異なります AbstractWashingMachine.java:50: エラー: superの呼出しはコンストラクタの先頭文である必要があります super("modelNumber"); ^ AbstractWashingMachineMain.java:7: エラー: クラス AutomaticWashingMachineのコンストラクタ AutomaticWashingMachineは指定された型に適用できません。 AbstractWashingMachine awm100px = new AutomaticWashingMachine("AWM100PX"); ^ 期待値: 引数がありません 検出値: String 理由: 実引数リストと仮引数リストの長さが異なります AbstractWashingMachineMain.java:9: エラー: クラス WasherDryerのコンストラクタ WasherDryerは指定された型に適用できません。 WasherDryer wd200rx = new WasherDryer("WD200RX"); ^ 期待値: 引数がありません 検出値: String 理由: 実引数リストと仮引数リストの長さが異なります エラー6個 ----- class AutomaticWashingMachine extends AbstractWashingMachine { //コンストラクタ public AutomaticWashingMachine(){ } //コンストラクタ poblic AutomaticWashingMachine(String modelNumber){ //親クラスのコンストラクタを呼ぶ super("modelNumber"); } }
javahack

2020/08/31 19:21

>kay-wsさん publicの綴りが一か所間違っています。 >icecleamさん やみくもにコピーするのではなく内容を理解してください。 そうすればtypoくらい自分で見つけられます。
kay-ws

2020/09/01 13:10 編集

>javahackさん これは大変失礼しました。 poblic →public ですね。 ```Java public AutomaticWashingMachine(String moduleNumber){ //親クラスのコンストラクタを呼ぶ super(moduleNumber); } ``` 文脈をそのまま保つため、元回答に追記しておきます。 >icecleamさん 以下の記述は間違っています。 ```Java super("modelNumber"); ``` これはご自身で考えてみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問