gpt4 book ai didi

java - 如何正确继承字段而不使它们对包开放?

转载 作者:太空宇宙 更新时间:2023-11-04 11:30:51 28 4
gpt4 key购买 nike

假设,我有一个包 Pack,其中包含类 ABA 是独立的,任何人(即使在 Pack 中)都不应该看到 A 的内部,因此大多数字段和方法都是私有(private)

现在我想扩展A来更改其私有(private)方法之一,保留其余方法 - 让它成为类AMod。执行此操作需要 A 的大部分字段和要重写的方法受到 protected 的保护,但 protected 可以访问该包。

那么,如何在 Pack 中创建 AMod,以便 AMod 能够访问 A 的字段和方法,而其他人则无法访问?制作一个嵌套/单独的包?

更新:

UPD2:

UPD3:

正如 Jacob G. 所建议的,我的代码需要重新设计,并且我设法从体系结构中删除了派生类。感谢您的帮助!

最佳答案

我发现缺少一个答案:不要过于关注使用继承以避免代码重复。

如果您只需要 A 行为的细微变化,那么您应该首先考虑“包裹”A(例如通过 decorator ),而不是扩展 A - 古老的 FCoI !

如果这是不可能的:请仔细查看 AAmod常见行为,并将这些部分提取到常见基类中。

最后:首先不要对 Java 访问修饰符过于兴奋。最后,它们帮助您传达某种想法或想法。 “心怀恶意”的人总会想方设法破坏你的意图。我想说的是:如果你担心你的团队成员以错误的方式使用你的类......那是一个社会问题;你将永远无法在技术层面解决这个问题。您还必须在社交层面上解决这个问题(通过教育人们来确保他们理解要做什么;而不是希望这里的私有(private)或那里的 protected 会阻止他们做错事)。

换句话说:建立一个简单的政策,例如“只有标记为公共(public)的内容才是公共(public)的;其他任何内容都不是公共(public)的”可能能够在任何时候都进行此类讨论。而不是花费大量时间在源代码中寻找完美的受私有(private)保护的解决方案。

关于java - 如何正确继承字段而不使它们对包开放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43822258/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com