後で子クラスで改訂されたスーパークラスで定義された変数にアクセスするコードに関連する問題がいくつかありました。いえ
//start of Stat class. Variables in question are defined here. (Name, Level, Experience, totalXP)
public class Stat {
public static String Name = " ";
public static int Level = 0;
public static double Experience = 0;
public static double totalXP = 0;
//Sets Name
public static void setName(String NameIn) {
Name = NameIn;
}
//Sets Level
public static void setLevel(int LevelIn) {
Level = LevelIn;
}
//Sets Experience
public static void setExperience(double ExperienceIn) {
Experience = ExperienceIn;
}
//Sets totalXP
public static void settotalXP(double totalXPIn) {
totalXP = totalXPIn;
}
//Sets up Attributes
public static void setall() {
setName("Herp");
setLevel(1);
setExperience(0);
settotalXP(0);
}
//Displays a Stat's Attributes
public static void DisplayLevel() {
System.out.println(Name);
System.out.println("Level: " + Level);
System.out.println(Experience + " out of " + totalXP + " total experience.");
}//End of method
public static void Levelup() {
if(Experience >= totalXP) {
Level++;
totalXP = totalXP * 1.3;
Experience = 0;
}//end of if statement
}//end of Levelup method
}//end of Stat.class
public class Agility extends Stat{
{//Revisionary Block
Name = "Agility";
Level = 1;
Experience = 0;
totalXP = 125;
}
public static int runnappDodge(int Dodge) {
Random generator = new Random(10);
Dodge = generator.nextInt(10);
if (Dodge == 0) {
Player.incomingDMG = 0;
}//end of if statement
return Dodge;
}
//start of the method located on player.class. This prints out " ", 0.0 and 0.0 for all //of the fields.
public static void checkLevel() {
System.out.println("You are level: " + Level);
System.out.println("You have " + experience + " experience out of " + totalXP + " total experience");
System.out.println(stat.Attack.Name + " Level: " + stat.Attack.Level + ": Experience: " + stat.Attack.Experience + "/" + stat.Attack.totalXP);
System.out.println(stat.Archery.Name +" Level: " + stat.Archery.Level +": Experience: " + stat.Archery.Experience + "/" + stat.Archery.totalXP);
System.out.println(stat.Agility.Name +" Level: " + stat.Agility.Level + ": Experience: " + stat.Agility.Experience + "/" + stat.Agility.totalXP);
}//end of checkLevel method
私の完全なコードはここにあります: http://pastebin.com/6nPGwJQe
reddit は役に立たなかったので、あなたに頼ります。(あなたが役に立たないというわけではありませんが、私はredditをもっと使っているので、より便利です). 私のコードはサブクラスの変数を更新する必要があると思いますが、そうではありません。変数を参照すると、スーパークラスで定義されたときとまったく同じになり、Aaron.name の場合は、「Aaron」ではなく「」になります。ここでゲッターとセッターが役立つかどうかはわかりませんが、すべてのアドバイスに感謝します
PS: stackoverflow に関する最初の質問です!
編集:フィードバックをありがとう。これはサンプルコードでした。最後のコメンターは大いに役立ちましたが、私の実際のコードはこれとは完全に独立しています。それは例を伝えることでした。そのコードが本当に重要なので、リンクを参照してください。編集2:インポートと参照のためにプロジェクトの構造を確認する必要があるかもしれないことがわかるので、ここに私のプロジェクト構造の画像があります:http://imgur.com/VhDzRrm
編集 3: 私の投稿では、間違った例を使用するのではなく、実際のコードを使用しています。