gpt4 book ai didi

java - 获取对调用父类(super class)方法的对象的引用

转载 作者:行者123 更新时间:2023-12-01 13:03:44 31 4
gpt4 key购买 nike

我正在尝试编写一个抽象类。在该类中,我有一个方法,该方法应该访问调用该方法的实际对象。然而,“this”只会返回我自己编写的“对象的一部分”(抽象的)。

要指定更多内容:如果我正在编写的方法有一个我的类类型的参数,我想要的看起来像这样:

public abstract class MyClass {
public void foo(MyClass invoker) {
...
}
}

上面的代码将允许我访问调用该方法的对象,但是像这样编写它会很乏味,因为这应该成为我想提供给其他人的库的一部分,而我无法确定,传递的参数实际上是正确的对象,而不是从 MyClass 派生的类的其他对象。

是否有一种方法可以按照 getNestingObject() 的方式调用某些内容,或者我是否必须专门为该方法提供一个参数并不断为每次调用推断“this”?

最后,由于我不是java大师,一个可能不太明显的问题:是否存在安全原因,为什么上述概念存在缺陷?有人可以吗恶意滥用此类关键字?

最佳答案

I am trying to write an abstract class. In that class I have a method which is supposed to access the actual object for which the method is called. "this" however will only return the "part of the object" that I write myself (the abstract one).

this 将返回对“整个”对象的引用,而不是“一部分”。为了证明这一点,如果将此引用强制转换为层次结构中较低的类,则可以使用此引用的实例来访问此类的任何属性或方法。

但是,转换 this 引用的实例并不是一个好的设计实践。一般来说,您应该在 MyClass 中编写具有一般行为的 foo 方法,并使用每个类的特定行为覆盖它。如果想使用父类的foo方法,可以使用super调用。

关于java - 获取对调用父类(super class)方法的对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23374162/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com