当前位置: 首页 > 知识库问答 >
问题:

派生类中的同步方法

毕瀚
2023-03-14

如果基类A有一个“public synchronized void method(){}”没有被它的派生类B重写,那么用来访问类B中的synchronized方法的锁是什么(即是派生类对象还是基类对象)?

共有1个答案

有宏峻
2023-03-14

没有“基类对象”。

synchronized方法锁定调用它们的实例。

 类似资料:
  • 代码:- 在这里,当我用mydog对象调用eat()方法时,它会打印出“dog eating”,有没有办法用mydog对象调用base Animal类的eat()方法,比如有没有像这样的东西 我不想使用super(),因为这样它也会从child类调用eat(),所以它会同时打印语句“animal eating”和“dog eating”,这是我不想要的,我想一次只调用一个语句。

  • 假设我有一个从Point2D继承的类Point3D和一个从Drawing2D继承的类Drawing3D。 我希望两个类Drawing2D和Drawing3D具有相同的属性名Points,这将是Drawing2D的Point2D列表,以及Drawing3D的Point3D列表。 由于具有相同的属性名,我希望Drawing3D能够在属性点上受益于Drawing2D方法。问题是我不能使用覆盖,因为类型不

  • 问题内容: 我正在查看包含同步方法的第三方库中的一些代码,在此方法中,有一个锁定在实例变量上的同步块。与此类似: 这有意义吗?如果是这样,在同步方法中使用同步语句有什么好处? 鉴于同步方法锁定了整个对象,对我来说似乎是多余的。在使用非私有的实例变量时,这种方法是否有意义? 问题答案: 在您的示例中,该方法 同时 锁定了和的实例。其他方法可能仅锁定对象的实例 或 对象。 因此,是的,这完全取决于他们

  • 我可以写: 但这当然不起作用,因为调用返回的是而不是我想要的。 我可以通过在(以及和等)中键入类型并抑制警告来避免这个问题,但是即使只有(比方说)10个扩展的实体类,这仍然是为了键入而编写的样板代码。此外,我认为,如果我必须为每个派生类编写代码(无论多么小)(也会有其他类似的方法),那么拥有类层次结构的好处就会丧失很多。 对此有更好的解决方案吗? 更新:使用Java7。

  • 假设我有一个没有数据的类: 和派生类 Empty类的对象的大小为1。派生类的空部分的大小通常为0。据我所知,编译器看到基Empty类没有数据,因此它可以优化Empty的大小,以防它“在”Derived中,但标准并不要求这样做。 所以问题是: 我能在编译时确定Derived类的Empty部分并没有占用内存吗。 我知道我可以像一样进行检查...但它太冗长了,并且有几个类,如派生。有没有更优雅的解决方案

  • 在我的wxpython程序中,面板的行为不同,这取决于我是将其作为派生类还是直接面板实例: 如果我按原样运行,它看起来很好。如果我运行它,注释掉创建panel1的四行,而不注释使用派生类创建panel1的行,则“some text”会被剪裁,只显示“sor”。当我制作一个非琐碎的程序时,更糟糕的事情就开始发生了。