Java有没有办法让方法只对类和子类可用?

Java有没有办法让方法只对类和子类可用?,java,inheritance,Java,Inheritance,我完全了解Java工作中如何使用public、protected和private。我想知道是否有一种方法可以在private和protected之间模拟修饰符。我只希望一个类及其子类能够访问其子类 我之所以想这样做,是因为我有一个类,Savable,它存储一个int-databaseIDSavable有一个save()方法,该方法存储DBID,然后调用protected abstract ContentValues getSaveData()从其子级获取任何其他信息,以写入DB。然而,这是不安全

我完全了解Java工作中如何使用
public
protected
private
。我想知道是否有一种方法可以在private和protected之间模拟修饰符。我只希望一个类及其子类能够访问其子类

我之所以想这样做,是因为我有一个类,
Savable
,它存储一个
int-databaseID
Savable
有一个
save()
方法,该方法存储DBID,然后调用
protected abstract ContentValues getSaveData()
从其子级获取任何其他信息,以写入DB。然而,这是不安全的设计
ContentValues
将存储所有对象信息,包括私有或不写入数据库的信息

现在,虽然我可以在
Savable
中创建一个save抽象方法,但我更愿意保留我现在的结构,因为我稍后将向
Savable
类添加数据,我更愿意永远不必向用户公开这些数据

那么,有没有办法在Java中模拟一个仅限儿童的修饰符呢?如果没有,我可以将用户提供的所有数据的加密值存储在
getSaveData()

请求的代码:已删除,因为不再需要

那么,有没有办法在Java中模拟一个仅限儿童的修饰符呢

没有。我们仅有的访问修饰符是您列出的。还有“default”可见性,也称为“package private”,但这并不能让子类访问元素。因此,您可能只需使用
受保护的
,而不用担心它


听起来更好的解决方案可能是对代码进行重构,但你的问题中没有太多具体内容。

我能想到的唯一办法是保护方法
,并将类放入自己的包中。

如果你自己在编写子类,那么你可以让它们成为
最终的


将其与
protected
修饰符混合使用,会得到您想要的东西。

当然,这并不能真正阻止某人从其代码中访问受
保护的
元素–只是更难。@MattBall-well,没有。但我觉得这个要求有点可疑。攻击者能不能不将自己的扩展Savable的类注入包中?如果我依赖它,那会欺骗系统。@Andy Turner,你为什么说这个要求是可疑的?@AndrewNo访问修饰符不是安全措施。它们不能阻止攻击。它们只是一种编程工具,可以帮助你的编译器防止你编写某些类型的错误代码。你的问题还不清楚。你能提供一些代码来说明你期望什么样的行为,你希望避免什么样的行为,以及你期望加密如何解决这个问题吗?@realpoint,我将发布代码。它是特定于Android的,所以我需要修改它。