我是 Java 的新手,所以我仍在学习使用严格面向对象的语言的规则。今天我想知道如何使用一种方法来处理该方法类之外的对象。是否有可能在任何情况下使用另一个类的方法成功地对对象执行操作?
假设我有一个 anchorPane 对象 (javafx)。尝试在其上调用 Text 类的 setText() 方法是不明智的,因为 anchorPanes 不直接显示文本。
但是,是否存在可能发生这种情况的情况?方法只能影响其类的对象是否总是一条规则?
最佳答案
Is it always a rule that methods can only affect objects of their class?
不是直接的,但是如果您将一个方法标记为 protected ,则该方法只能从同一类的对象和派生类的对象(甚至在其他实例上)调用。另见 https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
此外,您可以将其设为 final,这样就不可能否决该方法(如果您将类设为 final,则没有人可以从您的类派生)。在这种情况下,您得到的正是您所描述的:
//final here disallows to subclass "Sample". This assures that there exists NO subclass that invokes bar().
public final class Sample {
public void foo() {
//on same instance
this.bar();
//on another instance, but just same class (or subclass of Sample, but not possible because class is final)
Sample b = new Sample();
b.bar();
}
/*final here prevents that METHOD is overwritten. But class can be overwritten.
* subclasses are also allowed to invoke bar().
*/
protected final void bar() {
//do something here
}
}
关于java - 在什么情况下一个类的方法可以在另一个类的对象上调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55132304/