voidの性質や使い方、showメソッドについて
1ファイル1クラスの原則に反しますが、敢えて1ファイルに2クラスあるプログラムにおいて、voidの性質や使い方、showメソッド等について教えてほしいです。
ファイル名はStart.javaです。
---------------------------------
package sample;
class Cat {
String name;
int age;
void show(String name,int age) {
System.out.println("名前は" + name + "です");
System.out.println("年齢は" + age + "歳です");
}
}
public class Start {
public static void main(String[] args) {
Cat cat1 = new Cat();
cat1.name = "太郎";
cat1.age = 28;
cat1.show();
}
}
---------------------------------
「cat1.show();」のところでエラーが出ていますが、Eclipseでそのまま実行してみますと。
~~~~~~~~~~~~~~~~~~~
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
型 Cat のメソッド show(String, int) は引数 () に適用できません
at sample.Start.main(Start.java:16)
~~~~~~~~~~~~~~~~~~~
といったエラーが出てきます。しかし、Catクラスの「void show(String name,int age) 」の箇所を「void show() 」のように、Startクラスと同じく引数の中身を空にしますと。
||||||||
名前は太郎です
年齢は28歳です
||||||||
と、正しい結果が出力されたのです。
最初のプログラムは、Catクラスのshowメソッドには引数があり、Startメソッドのshowメソッドには引数が無い状態でした。
修正したプログラムでは、どちらのクラスのshowメソッドにも引数はありませんでした。
最初のプログラムでも、mainメソッドを実行して、nameとageに値を格納して、showメソッドでCatクラスの方で定義したshowメソッドを呼び出すといった流れで、正しい値は出るはずだと自分は考えたのですが。
なぜエラーになってしまったのか、どうして2つのクラスのshowメソッドの引数が空だとうまく結果が出力されたかにつきまして、お教えいただけないでしょうか。
よろしくお願い致します。
※OKWAVEより補足:「Webシステム開発」についての質問です。