Поскольку вы объявляете метод приватным, окончательный эффект не имеет эффекта и является избыточным.
Переопределение частного метода на самом деле не имеет особого смысла.
Это не что иное, как вызов частного метода в классе из другого метода в том же классе (который может быть общедоступным). Это то, что делается часто, чтобы код был более читабельным и управляемый по размеру.
Я не думаю, что это глупый вопрос :)
Возьмите Builder-шаблон, например. Он использует частные конструкторы, чтобы убедиться, что класс построен правильно. Таким образом, понимание того, что вы имеете в наличии в различной сфере, и почему важно :)
class Ideone {
private String m;
private Ideone(String m) {
System.out.println("Build me with: " + m);
this.m = m;
}
public String getM() {
return m;
}
static class IdeoneBuilder{
String m;
public IdeoneBuilder withM(String m) {
this.m = m;
return this;
}
public Ideone build() {
return new Ideone(this.m);
}
}
public static void main (String[] args){
// new Ideone(); // will not compile
Ideone ideone = new IdeoneBuilder()
.withM("test").build();
}
}
Edit: Вы можете сделать окончательный класс Ideone, и он все равно будет работать. И вы также не можете подклассифицировать его. Другими словами, вы убедитесь, что нет другого способа построить объект своего класса, кроме использования построителя (если не использовать отражение).
Нет ничего плохого; 'm' не переопределяется. – rgettman
'final' означает * не меняйте меня *, а не * не наследуйте меня * –
Вы можете вызвать * private * метод' Ideone # m() ', потому что класс' A' находится в области класса 'Ideone' , Не уверен, что это то, что вы имеете в виду? – msandiford