2012-09-21 31 views

回答

4

这里有几条细线,我可以用几种不同的方式回答这个问题。

考虑开发人员将所有内容都标记为私有的情况。如果只是我可以扩展它并覆盖doSomething()方法,它可能是一个非常好的类,可以重用。但是,由于该方法被标记为私人,我的手被捆绑。这将导致许多开发者复制&粘贴整个课程,改变一个必要的部分。 (不酷。)因此可以看到,将所有标记为私有可防止重用。

但是,另一方面,请考虑开发人员将所有内容标记为公开的情况。开发人员或其他开发人员开始编写扩展类,或者调用所有可能应该标记为protected/private的各种方法/访问属性。发现了一个设计错误或类似问题,这需要修改类。但是,由于它被写成“开放”,所以可能是一个简单的修复,现在要复杂得多,因为必须找到并考虑所有附加参考。

我认为最好的选择是妥协。将客户代码使用的设计标记为“公开”。将没有业务的事物标记为“私人”。如果有什么东西可以证明对将来有用的人有用,请将其标记为“受保护”。并且总是添加Javadocs以进一步表明您的意图。

+0

Thnx为答案。但是我想要了解这些访问修饰符如何帮助代码重用。 – Okky

1

要重用的代码需要可以理解且可靠。

可以理解的:通过使某些方法是私有的,类的作者指定这些方法是内部实现的deatils,重用户只需要考虑公共方法。

可靠:通过将字段设置为私有,我们可以防止重新用户意外地破坏重用代码的内部状态。

0

假设你很清楚这些访问说明如

私募类只

默认包只

保护类和派生类的范围

public-全部

现在想象一下,你有一个包含方法

public int calculate(int x,int y,int z){ 
z=x+y; 
x=z+x; 
z=x+y; 
return z; 
} 

这是一个公共方法,并可以从任何地方accesed类,任何包装,无论是衍生或没有任何类。 现在你想在一个新的类中使用这个函数,你可以简单地导入这个类并使用该方法而不必一次又一次地写入。

这是一个非常简单的例子,你可以在这里用你自己的函数替换,比如检查系列是否是斐波那契数列,计算简单的兴趣/ compund兴趣等等,并在需要的地方重复使用。

0

假设我有一个实用助手类,我希望别人能够重用。我在该类中加载了很多方法和变量,但使用该类的人不需要它们。

  • public标志着可以很容易地重复使用的方法。它应该始终记录良好,以便有人知道如何以及何时调用它。

  • private将该成员标记为内部机制的一部分 - 我的重新用户不需要担心。

通过显式说明允许的访问模式你把它有关的代码应该如何访问更加清晰,从而使其更易于维护,更容易让别人重新使用。

在一次采访中(我已经雇佣了很多开发人员),您应该能够清楚地解释每个访问修饰符的用途,并且能够给出每个用法的示例。