###前提・実現したいこと
javaを使用した課題に取り組んでいます。
インタフェース、抽象クラスを使用して以下の実行例通りに表示をしたいです。
[実行例]
$javac Kadai64.java
$java Kadai64
24インチディスプレイ:60000
またmain関数の中の手順が以下になります。
- MyFactory
クラスのオブジェクトを作成し,参照をFactory型の変数fに代入する
2. f引数に与え,FactoryViewerクラスのオブジェクトを作成し,参はVisible型の変数vに代入する
3. vを用いてviewメソッドを実行する
おそらくtoString()メソッドの戻り値がうまく返せていないので、違う結果になっていると思うのですが、解決方法がわかりません。
また参照変数についてもよく理解できていません。
###発生している問題・エラーメッセージ
Kadai64.java:48: ';' がありません。 return product:price; ^ Kadai64.java:48: 文ではありません。 return product:price; ^ エラー 2 個 (以上の文章を以下のように変更して、実行した結果) return "product:price"; FactoryViewer@3bba1894
###該当のソースコード
public class Kadai64 { public static void main(String arg[]) { MyFactory f = new MyFactory("24インチディスプレイ",600000); FactoryViewer v = new FactoryViewer(f); v.view(); } } /** *Factory抽象クラス */ abstract class Factory{ /** *フィールドを文字列にして戻す抽象メソッド */ abstract public String toString(); } class MyFactory extends Factory{ /** *製品名を表します */ protected String product; /** *価格を表します */ protected int price; /** *参照変数を表します */ protected Factory f; /** *製品名、価格を引数にとるコンストラクタ */ public MyFactory(String pro,int pri){ product = pro; price = pri; } /** *”製品名:価格”の文字列で返すコンストラクタ */ public String toString(){ return "product:price"; } } /** *表示する性質をクラスに付加するインタフェースVisible */ interface Visible{ /** *表示する抽象メソッド */ abstract void view(); } /** *Factoryの内容を表示するクラスFactoryViewer */ class FactoryViewer implements Visible{ /** *フィールドの値を引数に受け取るコンストラクタ */ public FactoryViewer(Factory f){ } /** *toStringメソッドの戻り値を表示するメソッド */ public void view(){ System.out.println(toString()); } }
###試したこと
エラー箇所をエラーにならないように変更してみた。
###補足情報(言語/FW/ツール等のバージョンなど)
java言語
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/05 14:20
2017/01/06 03:05
2017/01/06 03:23
2019/03/22 15:45