Java 継承 上手くいかない

前提

javaで簡易的なRPGゲームを作っています。まず名前を決めてもらい、その後村長との会話に続いていくというプログラムです。
その際親クラスとしてMainCharacterクラスを作成し他のクラスはそれを継承する形を取っています。名前を決め村長との会話をするとき、親クラスのgetterで名前を持ってこようとしますがそれがnullになっており、その原因が分かっていない状態です。

実現したいこと

・名前がnullになる原因を知り、解決したい。

発生している問題・エラーメッセージ

親クラスのgetterを作動すると、nullが返ってくる。

該当のソースコード

Main.java

package work; public class Main { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ DecideName dn = new DecideName(); dn.executeDecideName(); System.out.println("始まり始まり"); VilleageTopConversation vtc = new VilleageTopConversation(); vtc.conversation(); } }

MainCharacter.java

package work; public class MainCharacter { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }

DecideName.java

package work; import java.util.Scanner; public class DecideName extends MainCharacter{ public void executeDecideName() { boolean NameOk = false; String tentativeName; Scanner scanner = new Scanner(System.in); while(NameOk == false) { System.out.println("名前を入力(7文字以内、1文字目英大文字、2文字目以降数字か英字)"); System.out.print("→"); tentativeName = scanner.next(); if(CheckValidation(tentativeName)) { super.setName(tentativeName); System.out.println("よろしく"+super.getName()+"一緒に冒険しよう"); NameOk = true; }else { System.out.println("名前が条件と合致していません。やり直してください"); } System.out.println(super.getName()); } } private boolean CheckValidation(String name) { boolean flg = name.matches("[A-Z][A-Za-z0-9]{0,6}"); return flg; } }

VilleageTopConversation.java

package work; import java.util.Scanner; public class VilleageTopConversation extends MainCharacter{ public void conversation() { Scanner scanner = new Scanner(System.in); System.out.println("村長: ようこそ村へ!!あなたは"+super.getName()+"ですね!!\n" + "初めてのゲームですか?"); System.out.println("はい"); System.out.println("いいえ"); System.out.print("→"); String reaction = scanner.next(); System.out.println(reaction); } }

試したこと

・各クラスのコンストラクタを作成。

補足情報(FW/ツールのバージョンなど)

java version "17.0.2"
eclipse: Version: 2021-12 (4.22.0)

コメントを投稿

0 コメント