前提・実現したいこと
インターフェイスを継承したクラスをメインクラスで出力するという問題に挑戦中なのですが、どうすればエラーを出さずに出力できるのかが分かりません。
今の状態だとメインクラスのfuncPhone,funcMailer,funcComputerがうまく機能しないのです。
それとCellPhoneをインスタンス化した下にある、funcPhone(cp)の意味が呑み込めないです。
funcPhoneメソッドの引数IPhone phoneに、cp(CellPhone)をキャストしているという考え方でいいのでしょうか。
cpをそのまま使えば出力された実行結果は正解と一致するのですが、内容が呑み込めないと気になるので今回質問してみました。
ご回答よろしくお願いします。
問題の内容:
以下のプログラムが、期待された実行結果通りにプログラムが動くように、インターフェースIPhone、IComputer、IMailerを実装しなさい。
該当のソースコード
CellPhone.java package problemex4; public class CellPhone implements IPhone,IMailer,IComputer{ // メールを送信する public void sendMail(){ System.out.println("メールを送る"); } // メールを受信する public void recieveMail(){ System.out.println("メールを受信する"); } // webを閲覧する public void borwseWeb(){ System.out.println("ウェブを閲覧する"); } // ゲームをする public void playGame(){ System.out.println("ゲームをする"); } // 電話をかける public void callPhone(){ System.out.println("電話を掛ける"); } // 電話を受ける public void recievePhone(){ System.out.println("電話を受ける"); } } Problemex4_1.java package problemex4; public class Problemex4_1 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ CellPhone cp = new CellPhone(); funcPhone(cp); funcMailer(cp); funcComputer(cp); } // 電話としての処理 public static void funcPhone(IPhone phone){ phone.callPhone(); // 電話を掛ける phone.recievePhone(); // 電話を受ける } // メーラーとしての処理 public static void funcMailer(IMailer mailer){ mailer.sendMail(); // メールを送信する mailer.recieveMail(); // メールを受信する } // コンピュータとしての処理 public static void funcComputer(IComputer computer){ computer.playGame(); // ゲームをする computer.borwseWeb(); // ウェブを閲覧する } }
試したこと
メインクラスとCellPhoneクラスは出来ていたため、インターフェイスを実装しました。
public interface IPhone { public void callPhone(); public void recievePhone(); } public interface IMailer { public void sendMail(); public void recieveMail(); } public interface IComputer { public void borwseWeb(); public void playGame(); }
回答1件
あなたの回答
tips
プレビュー