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

标签 java polymorphism

我正在尝试编写一个抽象类。在该类中,我有一个方法,该方法应该访问调用该方法的实际对象。 然而,“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/

相关文章:

java - 将 Java POJO 转换为 Map,无需 JSON 序列化

java - 应该使用多个循环或一个循环并检查内部条件

java - DialogPreference 设置对话框的标题

scala - Scala中的家庭多态性

C++ VaSTLy 不同的派生类 - 虚拟方法? Actor ?

java - Maven站点部署问题

java - Java 中的截断或 DecimalFormat

c++ - 按值传递的返回类型多态性

java - 亚型多态性成分

java - 面向对象编程 - 避免 Switch/Case 和 If/else (JAVA)