Я изучал класс 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);
}
}
Vs...
public class Sum{
public int getSum(int a, int b){
return a+b;
}
}
Чем выгоднее первый образец?