有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么我的子类不能在java中正确初始化变量

在下面的代码中,myString总是初始化为null。我必须在init()或类似的程序中手动初始化。据我所知,它与超类/子类有关,但我不了解确切的机制

public class A extends B {

    private String myString = "test";


    public static void main(String[] args) {
        new A();
    }

    public A() {
        super();

    }

    public void c() {
        System.out.println(myString);
    }

}

public class B {

    public B() {
        c();
    }

    public void c() {

    }
}

共 (1) 个答案

  1. # 1 楼答案

    在完全创建对象并调用超类构造函数之后,立即添加对c();overidden方法的调用

    把你的代码改成这个

    public class A extends B {
    
        private String myString = "test";
    
    
        public static void main(String[] args) {
            new A();
        }
    
        public A() {
            super();
             c();     // Include the call to c(); here ...
    
        }
    
        public void c() {
            System.out.println(myString);
        }
    
    }
    
    public class B {
    
        public B() {
    
        }
    
        public void c() {
    
        }
    } 
    
     // Output : test