📅  最后修改于: 2023-12-03 15:15:54.597000             🧑  作者: Mango
在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
,不使用对象名称。
但是需要注意的是,在构造函数中调用非静态成员而不使用对象名称的话,需要确保该成员变量不被子类所覆盖(即子类没有定义同名的成员变量),否则将会调用到子类的成员变量而不是父类的成员变量。
最后需要强调的是,这种在构造函数中直接调用非静态成员而不使用对象名称的做法,虽然在某些情况下会更加方便,但是也会在可读性上带来一定的影响,因此应该谨慎使用。