java中的访问说明符和代码可重用性

时间:2012-09-21 05:00:45

标签: java

私有,公共等访问说明符如何帮助代码重用?

我接受了这个问题的采访,我无法找到答案。请帮助我。

4 个答案:

答案 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将该成员标记为内部机制的一部分 - 我的重新用户无需担心。

通过明确访问模型,您可以更清楚地了解应该如何访问该代码,从而使其更易于维护,更容易重复使用。

在一次采访中(我聘请了不少开发人员),你应该能够清楚地解释每个访问修饰符的用途,并能够给出每个用法的例子。