java:サブクラスメソッドを呼び出したいです。
java のプログラムで抽象クラスをオーバーライドしたサブクラスのメソッドをスーパークラスで呼び出したいのですが、どうしてもコンパイルが通りません。また通ったとしてもコマンドプロンプト画面で、
c:\File>javac UseSam.java
c:\File>java UseSam 5 6
c:\File>
となってしまい(この問題で求められている回答)5+6の結果 11 が返ってきません。
c:\File>java UseSam a a
c:\File>型が違います
c:\File>java UseSam 3 4 5
c:\File>引数の個数が不正です
上記のように打つとエラーメッセージだけは返ってきます。
つたない文章とはなってしまいましたが、ご教授のほどよろしくお願いいたします。
プログラムは下記のとおりとなります。(問題点などの指摘などしていただけたらありがたいです)
抽象クラスAbsSamは抽象メソッドadd含んでいる。
抽象メソッドaddは整数を返すメソッドで、整数型の引数aとbをとる。
abstract class AbsSam {
public abstract int add(int a, int b);
}
Samでは、抽象メソッドaddを実装し、addは引数a,bの和を返す。
public class Sam extends AbsSam {
public int add(int a,int b) {
return a + b ;
}
}
mainメソッドを含むUseSam。
プログラム実行時、引数として2つの整数を渡します。
c:\File>java UseSam 5 6
c:\File>11
と計算結果が返ってくる。
(条件)
・引数が2個でない場合、エラーメッセージを返す。
・引数が数値でない場合、エラーメッセージを返す。
・正しい引数が与えられた場合、addメソッドを実行し、addメソッドの続行結果を表示して終了とする。
public class UseSample {
public static void main( String[] args ) {
try {
//引数が2個でない場合
if(args.length != 2){
System.out.println("エラーメッセージ:引数の個数が不正です");
//引数が2個の場合
} else if (args.length == 2) {
int a = Integer.parseInt( args[0] );
int b = Integer.parseInt( args[1] );
AbsSam sum = new Sam();
sum.a = a;
sum.b = b;
System.out.println ("計算結果" + sum.add());
} else {
System.out.println("エラー");
}
//例外処理
} catch(NumberFormatException e) {
System.out.println("エラーメッセージ:引数の型が不正です" );
} catch(Exception e) {
System.out.println("エラー");
}
}
}
抽象クラスとサブクラスは問題ないのですが、UseSamがうまく動作しません。
ご教授のほどよろしく願いいたします。
お礼
ありがとうございます!✨