Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何放置公共方法';在私有方法中的实现是否可以防止中断使用者?_Java_Encapsulation_Private Methods_Public Method - Fatal编程技术网

Java 如何放置公共方法';在私有方法中的实现是否可以防止中断使用者?

Java 如何放置公共方法';在私有方法中的实现是否可以防止中断使用者?,java,encapsulation,private-methods,public-method,Java,Encapsulation,Private Methods,Public Method,这个问题源于几个相关的问题,并在某种程度上重新探讨了第一个似乎对OP的主要问题没有明确答案的问题: 我非常清楚地理解私有方法的用途,但是我很难想到一个例子,在私有方法中实现函数不会给API使用者带来问题,但是将实现直接放在公共方法中会带来问题。这是Java API中的常见做法 我基本上是在问上面的第一个问题,因为我没有读到一个巩固我理解的答案。以同样的例子: public class Sum { private int sum(int a, int b){ r

这个问题源于几个相关的问题,并在某种程度上重新探讨了第一个似乎对OP的主要问题没有明确答案的问题:

我非常清楚地理解私有方法的用途,但是我很难想到一个例子,在私有方法中实现函数不会给API使用者带来问题,但是将实现直接放在公共方法中会带来问题。这是Java 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);
    }

}
使用私有求和函数而不是将结果直接放入公共函数有什么好处

public int getSum(int a, int b) {
    return a + b;
}
也许这不是最好的例子,但我也非常欢迎更复杂或真实的例子

同样,我理解将实现放在私有方法中会隐藏实现,并允许重用,总体而言,对于将来的添加是一种更好的做法。但是,

  • 如果在私有方法中没有它,怎么可能破坏API的使用者
  • 所有的公共方法都应该以这种方式创建(总是将实现放在私有方法中),还是在哪里画线

如您所示,将实现放在私有方法中并没有任何区别

我相信这个问题误解了“方法的接口实现”和“公共方法-私有方法”之间的关系


重要的是将接口与实现分离。消费者只看到界面。函数提供程序选择/注入适当的实现。

sum示例似乎毫无意义。你有真实案例吗?如果你想让
Sum
中的其他方法能够使用
getSum
的原始实现,即使子类可以重写它,这是很有用的。我没有真实案例,这就是为什么我不理解中断任何调用公共函数的代码的论点。sum示例可能过于简单,无法说明这一点,但没有实际的示例正是我提出这个问题的原因。当我回顾大多数Java的数据结构实现(如HashMap和LinkedList)时,调用的私有方法通常只是为了重用而被分解。这就是为什么我对干扰来电者的争论感到困惑。