• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:継承について(長文です))

継承についての自己紹介メソッドの問題

このQ&Aのポイント
  • 継承についての練習問題で、自己紹介メソッドを持つIntroduceクラスを作成し、FistsNameクラス、FullNameクラス、IncludeAgeクラスを作成する方法について質問します。
  • コマンドライン引数で名字、フルネーム、フルネームと年齢の3種類のインスタンスを作成し、引数の個数により適切なメソッドが呼び出されるかどうかを質問します。
  • 引数をサブクラスに渡す方法において、コンストラクタとメソッドがどのように異なるかについても質問しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAKATON
  • ベストアンサー率62% (17/27)
回答No.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] + "才です。"); } }

aleck
質問者

お礼

回答ありがとうございます。遅くなって申し訳有りません。 >main()の引数をそのまま各自己紹介クラスへ 渡してしまったほうが簡単になるかと思います。 ↑これがやりたかったのです!ありがとうございました。見当違いのことを聞いたかと思ってドキドキしていました。これを参考に更に勉強を進めていきたいと思います。ありがとうございました。

関連するQ&A