当前位置: 首页 > 面试题库 >

在类的“所有者”类中调用函数

奚瑾瑜
2023-03-14
问题内容

我认为以下伪代码很好地总结了我的问题…

class Owner {
    Bar b = new Bar();

    dostuff(){...}
}

class Bar {
    Bar() {
        //I want to call Owner.dostuff() here
    }
}

Bar b由(拥有)拥有(拥有适当的字词?Owner)。那么对象类型将如何Bar调用Owner.dostuff()

起初我在想super();,但这是针对继承的类的。然后我想通过一个接口,我走对了吗?


问题答案:

如果dostuff是常规方法,则需要将Bar传递给实例。

class Owner {

   Bar b = new Bar(this);

   dostuff(){...}
}

class Bar {
   Bar(Owner owner) {
      owner.dostuff();
   }
}

请注意,Bar可能有很多所有者,但没有任何现实的方法来确定他们是谁。

编辑:您可能正在寻找内部类:示例和注释。

class Owner {

   InnerBar b = new InnerBar();

   void dostuff(){...}

   void doStuffToInnerBar(){
       b.doInnerBarStuf();
   }

   // InnerBar is like a member in Owner.
   class InnerBar { // not containing a method dostuff.
      InnerBar() { 
      // The creating owner object is very much like a 
      // an owner, or a wrapper around this object.
      }
      void doInnerBarStuff(){
         dostuff(); // method in Owner
      }
   }
}


 类似资料:
  • 问题内容: 我的目标是为此激发一个应用程序的时序图,我需要在运行时提供有关调用方和被调用方类名称的信息。我可以成功检索调用者函数,但无法获得调用者类名称吗? 当我打印堆栈时,没有有关调用程序类的信息。那么有可能在运行时检索调用方类吗? 问题答案: 好吧,在按提示进行了一些挖掘之后,这是我得到的: 调用时: 给定文件: 不知道从其他对象调用该对象时的行为。

  • 问题内容: 我有这段代码可以计算两个坐标之间的距离。这两个函数都在同一类中。 但是,如何在函数中调用该函数? 问题答案: 由于这些是成员函数,因此在实例上将其称为成员函数self。

  • UI代码:在资源\视图\分发器Registration.php 在控制器类中。。。。。 名称空间App\Http\Controllers; 使用App\User; 使用App\Http\Controller\Controller; 使用\Http\Request; 使用资源\视图\分销商或注册; 当我在路线上呼叫这个控制器时 致命错误:找不到类“App\Http\Controllers\distr

  • 如果一个类用同一个函数继承多个类,它如何调用每个继承类的函数而不手动指定每个类? 示例代码如下: 我可以通过手动指定接口来调用接口: 但是对于的,考虑到还会有,,我如何编写代码来调用每个继承接口的。

  • 问题内容: 我想在超类中实现,并通过在运行时在超类中的特定子类上调用类方法在所有子类中使用它。 MySuperClass 子类是否有可能在运行时访问类函数? 问题答案: 我想我明白了你的意思。您创建一个类,实现一个初始化程序和一个类(静态)函数: 接下来,您要创建子类,并让初始化程序调用该方法的重写版本。您只需要重写该方法即可: 现在,当您创建的实例时,显示的内容是: 这是预期的输出。 请注意,初

  • 我最近了解到,Sun/Oracle最新的指导方针规定,任何Swing对象的Swing方法(包括构造函数)都不能在EDT之外调用。 http://www.velocityreviews.com/forums/t707173-why-does-jdk-1-6-rovidens-creating-swing-components-on-the-edt.html 引用:“除了实际的线程安全和相关的问题,如