类成员变量初始化的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类成员变量初始化的问题相关的知识,希望对你有一定的参考价值。

class window{
    window(int maker){
        System.out.println("window"+maker);
    }
}
class House{
    window w1 ;//new window(1);
    window w3 = new window(3);
    House(){
        System.out.print("House");
        w3 = new window(33);
    }
    window w4 = new window(4);
}
class Demo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        House h = new House();
        //System.out.println("hello world");
    }

}

//output:
window3
window4
Housewindow33

今天在看编程思想的时候,突然发现自己的java基础有多渣,习惯了get/set方法后,一直以为类成员变量在类初始化的时候只有调用类成员变量的时候并手动将其输出才可以其打印出来。看了上面这个例子才发现如果类成员变量在类内部初始化后(上例中的window类的构造器初始化后),在new一个House对象出来的时候,编译器会自动打印已初始化的类成员。 -(PS:我好渣 - -!)

而且原书讲到w3虽然初始化了两次,效率虽然不高,但是如果存在重载构造器,这样可以使初始化得到保证。

以上是关于类成员变量初始化的问题的主要内容,如果未能解决你的问题,请参考以下文章

Python的类成员变量默认初始值的坑

如何初始化一个类的引用成员变量?

请问java构造函数如何初始化成员变量的啊?

C++成员初始化列表(构造函数后加冒号:)(用于在构造函数中初始化类成员变量,可以避免使用构造函数体内的赋值语句,可以确保成员变量在对象构造之初就已经被正确初始化,提高代码的性能和可读性)

C++:如何强制派生类设置基成员变量?

覆盖基类成员变量的初始值