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

在Java中执行继承的静态方法的正确方法?

方心思
2023-03-14

我的目标是创建一个抽象类,它的静态方法必须被实现,但是由于静态方法不能被抽象,我有一些问题。

这就是我提出的解决方案:

public abstract class combinedMethod {
    public static String computeMethodBody() throws
            CannotCompileException {
        throw new NotImplementedException();
    }
    public static ArrayList<CtMethod>  sortSelectedMethods() {
        throw new NotImplementedException();
    }
}

我写这篇文章是因为我找不到任何等价的答案,这让我想知道这在Java中是否是惯用的。

共有1个答案

佴波鸿
2023-03-14

静态方法是在类上调用的,独立于实例,因此如果它们是抽象的,运行时如何知道在哪个子类上调用它们?

CombinedMethod cm1 = new SubclassA(...)
CombinedMethod cm2 = new SubclassB(...)

// static method computeMethodBody is called on neither cm1 or cm2, so what implementation to choose.
String result = CombinedMethod.computeMethodBody();
 类似资料:
  • 我在某处读到: 如果静态同步方法位于不同的类中,则一个线程可以在每个类的静态同步方法中执行。每个类一个线程,无论它调用哪个静态同步方法。 假设我有以下类层次结构: 1)如果我有下面两个函数调用: 据我所知,它们不应该相互阻塞,并且两者可以同时执行。因为调用是用不同的类进行的。 2)但是,如果我有以下两个函数调用: 他们应该被对方屏蔽,因为他们被称为同一个班级。对吗? 还是还有别的原因?

  • 问题内容: 我正在阅读Khalid Mughal 撰写的Java™SCJP认证程序员指南。 在“继承”一章中,它说明了 成员的继承与声明的可访问性紧密相关。如果超类成员可以通过子类中的简单名称来访问(不使用任何其他语法,如super),则该成员被视为继承的 它还提到静态方法不是继承的。但是下面的代码完全可以: 我如何直接在课堂上使用?甚至更多,也可以。 这本书的解释仅适用于实例方法吗? 问题答案:

  • 问题内容: 我是JAVA的新手,我喜欢尝试并理解所有内容。 在JAVA中访问静态方法“ hero.returnHp()”时,我具有以下内容: 该程序运行良好,但是我注意到Eclipse发出警告,指出“应以静态方式访问hero类型的静态方法。” 当我接受自动修复时,它会更改为“ Mike.returnHp();”。到“ hero.returnHp();”。 所以我有两个问题: 1)这有什么好处? 2

  • 问题内容: 我不太明白为什么可以在Java中继承静态方法? 继承就像从基类继承,而Static属于Class而不是Object。 那么,如果静态仅属于该类,为什么它会滴入派生类呢?它不应该只与定义它的类一起使用吗? 继承静态方法是一种好的编程习惯吗? 问题答案: 在Java中,静态方法不是 继承的 (或正确的词被 覆盖 ),但可以 隐藏 。 这里最大的不同是它们不像对象方法那样经受多态性。 运行时

  • 我有以下类(请注意,方法是静态的): 当我打电话的时候: 我想得到输出:

  • 我知道在Java中,静态方法和实例方法一样是继承的,不同的是,当它们被重新声明时,父实现是隐藏的,而不是重写的。好吧,这有道理。但是,Java教程指出 接口中的静态方法从不继承。 然而,