在我看来,除了一点点语法糖,property()没有任何好处.
当然,这是好的能够写a.b=2
的不是a.setB(2)
,但隐瞒事实,即AB = 2不是一个简单的任务看起来像麻烦的前提,要么是因为一些意想不到的结果都可能发生,如a.b=2
实际上导致a.b
要1
.或者引发异常.或者性能问题.或者只是让人困惑.
你能给我一个具体的例子来好好利用它吗?(使用它修补有问题的代码不计算;-)
我想不出标题的更好的措辞,所以它有点误导,但是,我不是在谈论一个孩子访问从其父级继承的变量,这很容易.
我所说的是这个:
class Parent {
protected:
Parent *target;
int hp;
}
class Child : public Parent {
public:
void my_func();
}
void Child::my_func() {
target->hp -= 50;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试编译它,它会抱怨'hp'在这种情况下是"私有的".问题是孩子没有试图访问自己的父变量,而是其他一些类',这可能是也可能不是Child本身.
一个对象可以访问同一个类的另一个对象(内存中的两个独立实例)的所有变量和方法(公共的,受保护的或私有的),所以我认为它也适用于它,因为它继承自它试图访问的变量类,但似乎我认为这是错误的.
有小费吗?
PS不要粗鲁或任何东西,但我知道我可以创建get()和set()方法,但我希望有一个更清洁的方式.
我正在使用java编写游戏,并且作为问题标题建议我在我的课程中使用公共字段.(暂且)
从我所看到的公共领域是坏的,我有一些理解为什么.(但如果有人可以澄清你为什么不使用它们,那将不胜感激)
事情是,从我所看到的,(并且似乎合乎逻辑)是使用私有字段,但使用getter和setter来访问它们也不好,因为它首先破坏了使用私有字段的观点.
所以,我的问题是,有哪些替代方案?或者我真的必须使用私人领域与吸气剂和制定者?
这里是我的一个类及其一些方法的参考.
如果需要,我会详细说明.
public double health;
//The player's fields.
public String name;
public double goldCount;
public double maxWeight;
public double currentWeight;
public double maxBackPckSlts;
public double usedBackPckSlts; // The current back pack slots in use
public double maxHealth; // Maximum amount of health
public ArrayList<String> backPack = new ArrayList<String>();
//This method happens when ever the player dynamically takes damage(i.e. when it is not scripted for the player to take damage.
//Parameters will be added to make it …
Run Code Online (Sandbox Code Playgroud) 我有一个有两个方法A和B的类.该类将被子类化.是否有一种优雅的方式来强制执行B()只在A()方法中调用类的对象?
让我们约束它并说A()只在一个地方调用,但是子类实现A()并且可以选择在其中调用B().我想到这样做的一种方法是用一个全局变量来包装A()调用,该变量表示可以调用B(),而B()会在调用它时检查这个变量.这似乎并不优雅.
有什么建议?