Java – overriding protected methods of superclasses

In the following example, why does string B print null and string c print "GG"

If I am wrong, please correct me whenever the subclass (bclass) overrides the protected method (i.e. initclass()) of the superclass (aclass) If you instantiate a subclass A superclass must use the override method specified by its subclass

public class Example {

    public class AClass {

        private String a;

        public AClass() {
            initClass();
        }

        protected void initClass() {
            a = "randomtext";
        }
    }

    public class BClass extends AClass {

        private String b = null; 
        private String c;          


        @Override
        protected void initClass() {
            b = "omg!";
            c = "gg";
        }

        public void bValue() {
            System.out.println(b);   // prints null
            System.out.println(c);  // prints "gg"
        }
    }

    public static void main(String[] args) {
        Example.BClass b = new Example().new BClass();
        b.bValue();

    }

}

Solution

As of JSF 12.5

In the example, you can see the execution order The first step is to call the constructor to the object constructor This happens later:

Since your instance variable B is initialized to null, it will be null again later

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>