【发布时间】:2012-12-02 13:08:51
【问题描述】:
看下面的情况:
class Test extends Object {
private int x;
public getX() {return x;}
public setX(int _x) {x = _x;}
}
如您所见,没什么特别的。但是,我想知道是否有可能以使用该类的人不需要使用 getX() 的方式保留“私有 x”,换句话说,如果我可以映射一些自动调用的变量获取和设置。
类似于 Delphi 中的“属性”。它可以避免在复杂的表达式中使用 setX() 和 getX() 并且可以更容易理解谁在读取表达式。
例如,假设可以使用另一个标识符 xx 和 yy 来代替 get 和 set 方法。见:
import Test;
public static void main(String[] args) {
new Test() {
setX(10);
setY(20);
int z = getX() * getY() + (getY() * getY());
System.out.println("%d", z);
}
// would be like this
new Test() {
xx = 10;
yy = 20;
int z = xx * yy + (yy * yy); // xx would access the method getX() automatically
System.out.println("%d", z);
}
}
希望你们明白我的意思。
编辑:
卷起绉纱!这是很多答案!非常感谢大家。
【问题讨论】:
-
在 Java 中,强烈建议将变量设为私有并使用 get/set 访问而不是直接使用。如果您的子类具有相同的属性名称,您可能会看到这种方法的优势。
-
或者如果你有充分的理由不这样做,就公开
-
要么您希望它是私有的,要么您不希望它是私有的。如果您希望它是私有的,您不希望访问其他类。如果您想访问其他课程,请不要将其设为
private。 -
@Nambari 如果您的子类具有相同的 method 名称怎么办?那更糟。
标签: java properties encapsulation private-members