Risposta breve:
- i nomi dei metodi non vengono sostituiti per riflettere l'implementazione interna ma il comportamento previsto.
Risposta lunga:
haveChildren()
dovrebbe essere chiamato hasChildren()
.
Inoltre, non vedo hasChildren()
necessariamente essere il getter per un membro della classe booleana. Immagino che un tale metodo scoprirebbe se un membro di tipo Collection
è vuoto.
Il nome predefinito assegnato da un IDE ai getter e ai setter generati non è considerato una legge impostata su pietra.
Un altro punto: le interfacce hanno nomi per i metodi ancora da implementare.
Se i nomi dei metodi fossero sostituiti per riflettere l'implementazione interna, come si potrebbe mai progettare un'interfaccia? Le interfacce non hanno un'implementazione né sanno in anticipo cosa faranno gli implementatori sotto il cofano.
Prendiamo ad esempio l' Iterator
interfaccia in Java.
Quando si implementa Iterator
, anche quando si dispone di un membro booleano denominato next
, non si è autorizzati a rinominare hasNext()
in isNext()
o isHavingNext()
. Questo è un dettaglio di implementazione. In effetti, ho implementato Iterator
e quello che faccio è avere un membro del tipo di ciò che la mia classe ha un elenco di, chiamato next
(non un booleano). hasNext()
quindi ritorna next!=null
.
Inoltre, vedi questo:
class patient {
private boolean pulse;
private boolean breaths:
public boolean isDead(){ return (!pulse & !breaths);}
}
Si noti che isDead()
non è un normale getter.
Prendi gli strumenti di produttività degli IDE per quello che sono.
parent
funzionerebbe.