【问题标题】:Implementing methods from another file in a class?从类中的另一个文件实现方法?
【发布时间】:2013-06-27 11:13:08
【问题描述】:

我正在处理多个使用许多相同方法的 java 文件。到目前为止,当我更新任何方法时,我必须在其他文件中找到该方法并手动更新它们。我想知道如何通过实现“主文件”中的方法来做到这一点,该文件将包含我普遍使用的许多不同方法的主体。在我的研究中,我认为我可以通过接口来做到这一点,但是当我创建一个接口时,它不允许我添加一个主体......所以,显然我在那里做错了什么或者不正确地使用了接口。无论如何,实现这个目标最好的方法是什么?

【问题讨论】:

  • 考虑使用 ab 抽象类代替接口。很好的阅读主题:link.

标签: java eclipse class methods multiple-inheritance


【解决方案1】:

如果类是相关的并且有父子关系,那么你可以在你的父类中有一个方法(可能是抽象的),它将保存这个公共代码。

如果类不相关但仍有一些公共代码,那么将公共代码移动到实用程序类可能是个好主意。

更多的cmets只有看代码才能提供。

【讨论】:

  • 嗯,是的,我正在尝试将其移至“实用程序类”并在所有其他文件中成功实现该类,以便可以在没有主体的情况下调用“实用程序类”方法必须完整地写在不同的文件中。那我该怎么做……?这才是真正的问题……
  • @user2510325 如果您正在实现实用程序类,那么只需将所有这些方法设为公共静态。在所有其他需要该方法的类中,以静态方式调用它,例如 Utilityclass.commonMethod()。
【解决方案2】:

听起来您需要使用父类(可能是抽象类)和子类。

父类:

public class Parent {
     public void method1() {
          System.out.println("You can call this method from Child");
     }
}

儿童班:

public class Child extends Parent {
    // Because you're extending Parent, it will allow you to use the method in your parent class.
    public void method2() {
        System.out.println("You can't call this method from Parent");
    }
}

现在如果你调用你的方法,你可以这样做:

Parent parent = new Parent();
parent.method1();

Child child = new Child();
child.method1();
child.method2();

输出:

"You can call this method from Child"
"You can call this method from Child"
"You can't call this method from Parent"

如果您现在在父类中编辑 method1,它将自动更改您的子类将提供的输出。

【讨论】:

  • 你的父类不是这里的抽象类
  • @Ruchi 我知道,这是有意的。如果 OP 是初学者并尝试使用该代码,如果它是抽象的,他可能会混淆他,他会在将来尝试实例化它。它不必是抽象的。这就是为什么我把“可能是抽象的”放在括号里。
【解决方案3】:

因为您已经标记了“(类的)多重继承”这个问题,我假设您已经发现这在 Java 中是不可能的,并且在您的层次结构中使用抽象类没有意义。

您可以做的是利用委托技术: 创建一个类 A 并将所有常用方法放在那里。在 B 类和 C 类中,您可以创建 A 类的实例并使用该类的所有方法。 示例:

A delegate = new A();
delegate.someMethod();

详细了解委托模式here

【讨论】:

    猜你喜欢
    • 2013-10-04
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多