Is there a way to override class variables in Java?

后端 未结 17 1306
没有蜡笔的小新
没有蜡笔的小新 2020-11-22 09:49
class Dad
{
    protected static String me = \"dad\";

    public void printMe()
    {
        System.out.println(me);
    }
}

class Son extends Dad
{
    protected         


        
17条回答
  •  遥遥无期
    2020-11-22 10:20

    You can create a getter and then override that getter. It's particularly useful if the variable you are overriding is a sub-class of itself. Imagine your super class has an Object member but in your sub-class this is now more defined to be an Integer.

    class Dad
    {
            private static final String me = "dad";
    
            protected String getMe() {
                return me;
            }
    
            public void printMe()
            {
                    System.out.println(getMe());
            }
    }
    
    class Son extends Dad
    {
            private static final String me = "son";
    
            @Override
            protected String getMe() {
                return me;
            }
    }
    
    public void doIt()
    {
            new Son().printMe(); //Prints "son"
    }
    

提交回复
热议问题