Java:公开 protected 方法的简单方法

标签 java inheritance methods scope

我有一个类 (Capsule),它有很多 protected 方法 (30+)。这个想法是允许开发人员扩展此类并在类 (ImADev) 中使用 protected 方法,但将其留给开发人员将它们公开为公共(public)(按他们认为合适的方式覆盖方法)。

我现在有一个用例,我想将这些对象传递给一些实用程序类/方法并允许它们访问 protected 方法..除非它们受到保护,所以我的实用程序类/服务不能看到他们。

请看下面的例子:

// My Capsule class with protected methods
public abstract class Capsule {
   public Capsule(..) { .. }
   protected String getFoo() { return "foo"; }
}

// How a dev should use the class
public class ImADev extends Capsule {
    public ImADev(..) { super(..); }
    public String getBar() { this.getFoo() + "BAR");
}

// A special utility class
// Helper.helper() can accept any class derived from Capsule
public class Helper {
    public String helper(Capsule c) { 
        return " im doing something awesome with " + c.getFoo();
        // Except i cant do this, because c.getFoo() is protected.
    } 
}

解决这个问题的最佳方法是什么?请记住,我有很多 protected 方法。

最佳答案

要么您的类(class)做得太多,在这种情况下,将其分解为更小、定义更明确的类(class)

或者,实现您的实用程序类可以调用的安全公共(public)方法来包装您的 protected 方法

或者,只是将它们公开,因为听起来它们可能/应该是

或者,将类中的数据与行为(组合)分开,那么您的实用程序类只需处理更安全的公共(public) getter 方法,而不是可以更改内部结构的 protected 行为方法

在不了解您的应用程序及其用途的情况下,很难提供更好的答案

关于Java:公开 protected 方法的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10746460/

相关文章:

java - 如何重构银行方法中的循环

java - 如何修复 : Embedded H2 Database "NonTransientError: Unable to read the page at position" error?

c++ - 绕过基类构造函数调用

java - 两个类和图像不出现

c++ - 调用一个类的构造函数,被多个类继承

c# - 枚举继承解决方案

java - 从我创建的使用公式的方法计算值时遇到问题

Java 8 从数组中流式传输唯一字符

ListView 中的 JavaFx 按钮启用程序

java - "Ionic build android"错误