我有一个类结构,我希望基类中的某些方法可以从直接从基类派生的类访问,而不是从派生类派生的类。根据 Java 语言规范,可以覆盖继承方法的访问规范以使它们更公开,但不能更私有。例如,这是我需要做的事情的要点,但这是非法的:
// Defines myMethod
public class Base {
protected void myMethod() {}
}
// Uses myMethod and then hides it.
public class DerivedOne extends Base {
@Override
private void myMethod();
}
// can't access myMethod.
public class DerivedTwo extends DerivedOne {
}
有没有办法做到这一点?
编辑解释我为什么要这样做:
在这种情况下,类结构是数据处理和导入结构。它读入并解析充满表格数据的文本文件,然后将它们存储在数据库中。
基类是管理其数据库处理部分的基表类。其中包含相当数量的功能,这些功能对所有表类型都是通用的——因为一旦它们在数据库中,它们就会变得统一。
中间类特定于被解析文件中的表类型,具有表解析和导入逻辑。它需要访问一些基类的数据库访问功能。
顶级类是特定于表的,只是以父类可以理解的方式初始化表的布局。此外,基类的用户不需要查看或访问中间类所做的数据库特定功能。本质上,我只想将这些函数展示给基类之上的一层,而不是其他任何一层。
我问是因为,虽然我作为示例发布的代码是非法的,但可能还有其他方法可以达到同样的目的。我问有没有
也许隐藏是错误的表达方式——我真正需要做的是将一些应该对基类私有的功能暴露给层次结构中上一层的类。隐藏可以做到这一点 - 但我可以看到隐藏将是一个问题。还有另一种方法可以做到这一点吗?