※ ChatGPTを利用し、要約された質問です(原文:voidの性質や使い方、showメソッドについて)
voidの性質や使い方、showメソッドについて
このQ&Aのポイント
voidの性質や使い方、showメソッドについての質問
1ファイルに2クラスがあるプログラムでのvoidの性質や使い方についての質問
CatクラスとStartクラスの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システム開発」についての質問です。
お礼
ありがとうございます。 はい、 void set_name(String name) { this.name=name; } void set_age(int age) { this.age=age; } のようなコードを読んだことがありまして、なぜこういったことを行うのかが疑問でした。 チェック機能があったんですね(^^; privateやpublicは確かに、意識して書いてないですね…それも意識できるようになれたら、と思います。 if (hogehoge.set_xxx(para)!=true) { /* 設定が不適切だった時の処理 */ } は、自分の実力では活用法がまだ想像できないですね…また質問するかもしれませんので、その際はすみませんがよろしくお願いします<m(__)m> デバックモードでも追ってみます。