- ベストアンサー
継承についての自己紹介メソッドの問題
- 継承についての練習問題で、自己紹介メソッドを持つIntroduceクラスを作成し、FistsNameクラス、FullNameクラス、IncludeAgeクラスを作成する方法について質問します。
- コマンドライン引数で名字、フルネーム、フルネームと年齢の3種類のインスタンスを作成し、引数の個数により適切なメソッドが呼び出されるかどうかを質問します。
- 引数をサブクラスに渡す方法において、コンストラクタとメソッドがどのように異なるかについても質問しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
引数によってコンストラクタを分けたり、自己紹介メソッドを 呼び分けたりしたら、クラスを階層化した意味が無くなって、 しまいます。コンストラクタや自己紹介メソッドへ渡す 引数は引数の数にかかわらず共通にしたいですよね。 この例題の場合は、main()の引数をそのまま各自己紹介クラスへ 渡してしまったほうが簡単になるかと思います。 面白そうなので、自作してみました。 以下のような感じになるのではないでしょうか? package selfintroduction; public class IntroductionMain { private static Introduce[] introductions = { new FistsName(), new FullName(), new IncludeAge()}; public static void main(String[] args) { if( args.length < 1 || args.length > 3 ) { System.out.println("引数エラー"); return; } Introduce introduce = introductions[args.length-1]; introduce.selfIntroduction(args); } } package selfintroduction; public abstract class Introduce { public Introduce() { } public abstract void selfIntroduction( String[] args ) ; } } package selfintroduction; public class FistsName extends Introduce { public void selfIntroduction( String[] args ) { System.out.println("私の名前は" + args[0] + "です。"); } } package selfintroduction; public class FullName extends Introduce { public void selfIntroduction( String[] args ) { System.out.println("私の名前は" + args[0] + " " + args[1] + "です。"); } } package selfintroduction; public class IncludeAge extends Introduce { public void selfIntroduction( String[] args ) { System.out.println("私の名前は" + args[0] + " " + args[1] + "です。"); System.out.println("年齢は" + args[2] + "才です。"); } }
お礼
回答ありがとうございます。遅くなって申し訳有りません。 >main()の引数をそのまま各自己紹介クラスへ 渡してしまったほうが簡単になるかと思います。 ↑これがやりたかったのです!ありがとうございました。見当違いのことを聞いたかと思ってドキドキしていました。これを参考に更に勉強を進めていきたいと思います。ありがとうございました。