こんにちは、shinoです。毎日ボチボチプログラミングをしながら生活しています。その中での技術・エラーなどの紹介をしています。
今回は、Javaのエラーを紹介していきます。Javaを初めて使う方向けに書いてみます。私もこの記事を書いている時から始めています。ここから少しずつ学んで行こうかと思っているところでございます。
エラー内容
コンストラクターHero()は未定義です。
どんなタイミングか
こんなコードを書いていました。以下のコードでエラーが出ます。
何が原因かわかりますか?
メインとHeroクラスを作成しています。メインでHeroのmethodsを呼び出そうとしているところでエラーが出ています。
1 2 3 4 5 6 7 |
public class Main { public static void main(String[] args) { Hero h = new Hero(); System.out.println(h.hp); } } |
1 2 3 4 5 6 7 8 9 |
public class Hero { String name; int hp; public Hero(String name) { this.hp = 500; this.name = name; } } |
対応策
原因は分かりましたか?
対応は簡単です。Heroクラスで定義しているのは、引数があるものを想定して作成しています。
Mainの方で呼び出しているのは、引数なしで設定されています。
なので、そこを修正します。
1 2 3 4 5 6 7 |
public class Main { public static void main(String[] args) { Hero h = new Hero("test"); System.out.println(h.hp); } } |
今回は、引数が必要なことを想定していたのでMain側を修正しました。
おまけ
以下のように設定することでも解決できます。
引数ありと引数なしを設定する方法です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class Hero { String name; int hp; int power; public Hero(String name) { this.hp = 500; this.name = name; } public Hero() { this.hp = 350; this.power = 20; } } |
引数あり、なしで呼び出すことができるようになります。
使い分けがある場合はこんな感じでいいかと思います。
最後に
お疲れ様です。エラーは解決できたでしょうか?
他にもエラー情報等も掲載してあるので読んでみて下さい。
解決できなければ、Java公式を確認してみるのもいいと思います。
Access Denied
ひと休憩の際におすすめ記事は「Exception in thread “main”のエラー解決法」です。時間があれば読んでみて下さい。
コメント