这是我尝试做的正确方法吗?抽象的静态变量?

1 java oop static abstract

看下面的代码.似乎有更简单的方法来做到这一点.

对于Class我想要添加到系统的每个新内容,我必须执行以下操作才能设置类变量(static - > maxPlayers)?

像抽象静态变量?

protected abstract class Class{
        protected abstract int getMaxPlayers();

        public class Soldier extends Class{
            public static final int maxPlayers = 4;

            @Override
            protected int getMaxPlayers() {
                return Soldier.maxPlayers;
            }
        }

        public class Demoman extends Class{
            public static final int maxPlayers = 2;

            @Override
            protected int getMaxPlayers() {
                return Demoman.maxPlayers;
            }
        }
        public class Scout extends Class{
            public static final int maxPlayers = 4;

            @Override
            protected int getMaxPlayers() {
                return Scout.maxPlayers;
            }
        }
        public class Medic extends Class{
            public static final int maxPlayers = 2;

            @Override
            protected int getMaxPlayers() {
                return Medic.maxPlayers;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

它就像我必须重复这个模板:

public static final int maxPlayers = 2;

            @Override
            protected int getMaxPlayers() {
                return Medic.maxPlayers;
            }
Run Code Online (Sandbox Code Playgroud)

我认为这样做是不正确的.

Roh*_*ain 11

首先,你不应该为你的班级命名Class(甚至不是例子).选择一个更好的名字.

其次,这似乎是你真正需要的枚举:

public enum Army {   
    SOLDIER(4),
    DEMOMAN(2),
    SCOUT(4),
    MEDIC(2);

    private final int maxPlayers;

    private Army(int maxPlayers) {
        this.maxPlayers = maxPlayers;
    }

    public int getMaxPlayers() {
        return maxPlayers;
    }
}
Run Code Online (Sandbox Code Playgroud)