获取对Object调用超类方法的引用

时间:2014-04-29 20:00:27

标签: java polymorphism

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

指定更多: 如果我写的方法有一个类我的类的参数,我想要的是这样的:

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

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

有没有办法按照getNestingObject()的方式调用某些东西,或者我是否必须给该方法一个参数并不断向每次调用推断“this”?

最后,由于我不是java中的高手,这个问题可能不太明显: 是否存在安全原因,为什么上述概念存在缺陷?有人可以 恶意企图滥用那种关键词?

1 个答案:

答案 0 :(得分:1)

  

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

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

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