📜  Java - 直接从构造函数调用非静态成员而不使用对象名称(1)

📅  最后修改于: 2023-12-03 15:15:54.597000             🧑  作者: Mango

Java - 直接从构造函数调用非静态成员而不使用对象名称

在Java中,我们可以通过对象名称来调用非静态成员,如下所示:

public class MyClass {
    private int num;

    public MyClass(int num) {
        this.num = num;
    }

    public int getNum() {
        return num;
    }
}

MyClass obj = new MyClass(5);
int num = obj.getNum();

以上代码创建了一个MyClass对象,并使用对象名称obj调用了getNum()方法获取了成员变量num的值。

但是,在构造函数中我们同样可以直接调用非静态成员而不使用对象名称,如下所示:

public class MyClass {
    private int num;

    public MyClass(int num) {
        this.num = num;
        System.out.println(num); // 直接调用成员变量num
    }
}

MyClass obj = new MyClass(5);

以上代码在创建MyClass对象时,直接在构造函数中调用了成员变量num,不使用对象名称。

但是需要注意的是,在构造函数中调用非静态成员而不使用对象名称的话,需要确保该成员变量不被子类所覆盖(即子类没有定义同名的成员变量),否则将会调用到子类的成员变量而不是父类的成员变量。

最后需要强调的是,这种在构造函数中直接调用非静态成员而不使用对象名称的做法,虽然在某些情况下会更加方便,但是也会在可读性上带来一定的影响,因此应该谨慎使用。