私有,公共等访问说明符如何帮助代码重用?
我接受了这个问题的采访,我无法找到答案。请帮助我。
答案 0 :(得分:4)
围绕这个有几条细线,我可以用几种不同的方式回答这个问题。
考虑开发人员将所有内容标记为私有的情况。它可能是一个非常好的类,只要我可以扩展它并覆盖doSomething()
方法,就可以重用它。但是,由于该方法已被标记为私有,因此我的双手被捆绑。这将导致许多开发人员复制&粘贴整个班级,改变一个必要的部分。 (不酷。)因此可以看出,将所有内容标记为私有可以防止重用。
然而,另一方面,考虑开发人员将所有内容标记为公开的情况。开发人员或其他开发人员开始编写扩展类,或者调用所有可能应该标记为protected / private的各种方法/访问属性。找到设计错误或类似错误,需要修改类。但是,由于它是“开放式”编写的,现在可能是一个简单的修复程序要复杂得多,因为必须找到并考虑所有其他参考文献。
我认为最好的选择是妥协。将设计为客户端代码使用的内容标记为“公共”。标记没有业务被扩展/覆盖为“私有”的东西。如果某些事情可能对未来某人有用,可以将其标记为“受保护”。并且总是添加Javadoc以进一步表明您的意图。
答案 1 :(得分:1)
要重用的代码需要易于理解和可靠。
可理解:通过将某些方法设为私有,类的作者指定这些方法是内部实现deatils,重新用户只需要考虑公共方法。
可靠:通过将字段设为私有,我们可以防止重新用户意外破坏重用代码的内部状态。
答案 2 :(得分:0)
假设您非常了解这些访问说明符的范围,例如
仅限私人课程
仅限默认包
受保护类和派生类
公开所有
现在假设你有一个包含方法的类
public int calculate(int x,int y,int z){
z=x+y;
x=z+x;
z=x+y;
return z;
}
这是一个公共方法,可以从任何地方,任何包和任何类接收,无论它是否派生。 现在您想在新类中使用此函数,您只需导入此类并使用该方法而无需一次又一次地编写它。
这是一个非常简单的例子,你可以在这里替换你自己的函数,例如检查系列是否是斐波那契系列,计算简单兴趣/复合兴趣等等。并在任何需要的地方重复使用它。
答案 3 :(得分:0)
假设我有一个实用程序帮助程序类,我希望其他人能够重用。我在该类中有大量的方法和变量,但使用该类的人不需要它们。
public
标记了可以轻松重复使用的方法。它应该始终有详细记录,以便有人知道如何以及何时调用它。
private
将该成员标记为内部机制的一部分 - 我的重新用户无需担心。
通过明确访问模型,您可以更清楚地了解应该如何访问该代码,从而使其更易于维护,更容易重复使用。
在一次采访中(我聘请了不少开发人员),你应该能够清楚地解释每个访问修饰符的用途,并能够给出每个用法的例子。