是否可以在Java中隐藏或降低对继承方法的访问?
我有一个类结构,我希望基类中的一些方法可以从直接从基类派生的类访问,但不能从派生类派生的类访问。根据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 {
}
有没有办法做到这一点?
编辑以解释为什么我想这样做:
在这种情况下,类结构是数据处理和导入结构。它读取并分析充满表格数据的文本文件,然后将其存储在数据库中。
基类是管理数据库处理部分的基表类。其中包含相当多的功能是所有表类型通用的 - 因为一旦它们进入数据库,它们就会变得统一。
中产阶级特定于文件中要解析的表的类型,并具有表解析和导入逻辑。它需要访问基类的某些数据库访问函数。
顶级类特定于表,除了以父类可以理解的方式初始化表的布局之外,不执行任何操作。此外,基类的用户不需要查看或访问中产阶级所做的数据库特定功能。从本质上讲,我只想将这些函数揭示到基类之上的一个级别,而不是其他任何一个级别。
我问是因为,尽管我作为示例发布的代码是非法的,但可能还有其他一些方法可以实现相同的目的。我问是否有。
也许隐藏是表达这一点的错误方式 - 我真正需要做的是向层次结构中一级的类公开一些应该私有于基类的功能。隐藏将实现这一目标 - 但我可以看到隐藏将是一个问题。有没有另一种方法可以做到这一点?