公共方法的私有方法

kri*_*tap 28 java encapsulation private-methods stringtokenizer public-method

我正在考试这StringTokenizer.java门课,脑海里浮现出几个问题.

我注意到其他类使用的公共方法调用了一些完成所有工作的私有方法.现在,我知道OOD的原则之一就是尽可能多地私有化并隐藏所有实现细节.我不确定我是否完全理解这背后的逻辑.

我理解,将字段设为私有以防止将无效值存储在其中非常重要(这只是众多原因之一).然而,当谈到私人方法时,我不确定它们为何如此重要.

例如,在StringTokenizer类的情况下,我们不能只将所有实现代码放在公共方法中吗?它如何对使用这些方法的类产生影响,因为这些方法的API(即调用这些公共方法的规则)将保持不变?我能想到为什么私有方法有用的唯一原因是它可以帮助你编写重复的代码.例如,如果所有公共方法都做了同样的事情,那么您可以声明一个执行此任务的私有方法,并且可以由公共方法使用.

其他问题,在私有方法中编写实现而不是公共方法有什么好处?

这是一个小例子:

public class Sum{

    private int sum(int a, int b){
        return a+b;
    }

    public int getSum(int a, int b){
        return sum(a,b);
    }
}
Run Code Online (Sandbox Code Playgroud)

VS ...

public class Sum{

    public int getSum(int a, int b){
        return a+b;
    }
}
Run Code Online (Sandbox Code Playgroud)

第一个样本如何更有益?

Jua*_*ano 32

为了添加一些东西,私有方法总是可以安全地更改,因为你肯定知道只能从自己的类调用,没有外部类能够调用私有方法(他们甚至看不到它).

因此,拥有私有方法总是很好,因为您知道更改它没有问题,即使您可以安全地向该方法添加更多参数.

现在想想一个公共方法,任何人都可以调用该方法,因此如果添加/删除参数,则还需要更改对该方法的所有调用.