【问题标题】:Making a function mandatory in an extended class, possible?在扩展类中强制执行函数,可能吗?
【发布时间】:2015-03-09 09:58:32
【问题描述】:

在 Java 中,是否可以定义一个必须重写才能有效的函数/方法?

例如,假设我有一个带有 drawupdate 函数的可绘制对象。我想要一种方法来自动让该类的用户承认需要定义这些函数,否则他们将什么也不做。

另外,我想知道 Eclipse(或者在我的例子中是 Eclipse ADT)是否可以在扩展时自动填充这些必需的功能。

这似乎是一个非常简单的问题,但谷歌搜索和堆栈搜索证明是无用的。感谢您的帮助

【问题讨论】:

  • 使用接口可能吗?
  • 这几乎是我想要的,但是一个接口不能单独运行。我不想为了让代码更严格而纠缠用户添加一个界面。

标签: java android eclipse syntax


【解决方案1】:

听起来你在谈论一个抽象方法

public abstract returnType methodName(/*...args...*/);

为此,您还必须标记您的班级abstract

public abstract YourClass {
    // ...
}

或者,您可以在接口中定义方法,让您的类implement 使用接口而不实际定义它包含的方法,然后声明类abstract

public abstract class YourClass implements TheInterface {
    // ...
}

另外,我想知道 Eclipse(在我的例子中是 Eclipse ADT)是否可以在扩展时自动填充这些必需的功能。

是的,Eclipse 有一个功能可以做到这一点。我不再使用 Eclipse,所以我不记得具体细节,但它肯定在那里。

【讨论】:

  • 谢谢@T.J.克劳德!
【解决方案2】:

你可以

  • 使用界面

和/或

  • 声明你的类abstract并创建一个抽象方法

另外,看看Template method pattern

【讨论】:

  • 谢谢@antonio。正确答案,但 T.J.克劳德首先进入并在他最初提交后继续详细说明他的答案
  • @1owk3y 无疑,这就是为什么我赞成他的回答:)
  • 也有一些反馈,这些点看起来好像两个“步骤”都是必要的,而实际上它是一种“非此即彼”的交易。我觉得它应该以“尝试以下方法之一”开头,或者第一个点可能在末尾有一个“或”。再次感谢!
  • 你是对的,我编辑了我的答案,所以下面的读者不会感到困惑,谢谢你的指出!。我添加和/或因为选项不是排他性的(您可以创建一个接口并声明实现该接口的类抽象)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 2010-09-23
相关资源
最近更新 更多