Así que yo estaba haciendo una clase el otro día y se utiliza el método de Eclipse para crear el método es igual cuando me di cuenta que genera el siguiente código trabajo:Visibilidad Java campo privado
class Test {
private int privateInt;
[...]
public boolean equals(Object obj) {
[...]
Test t = (Test) obj;
if (t.privateInt == privateInt) {
[...]
}
}
t.privateInt .. ???? ¡Se supone que es privado! Así que supongo que hay una visibilidad de campo más que no sea privada, protegida, protegida de paquetes y pública.
¿Qué está pasando aquí? ¿Cómo se llama esto? ¿Dónde alguien usaría esto? ¿Esto no rompe la encapsulación? ¿Qué pasa si la clase no tiene un mutador y yo cambié esto? ¿Esto le sucede a C++ también? ¿Es esto un modismo OO? Si no, ¿por qué Java lo hizo?
En general, ¿dónde puedo encontrar información sobre esto?
Gracias.
OK ... Ahora entiendo ... ¿POR QUÉ? ¿Por qué Java permitió que esto sucediera? ¿Puedes pensar en algunos ejemplos de la vida real? Entiendo por qué debería funcionar en iguales ... Pero debe haber un ejemplo mejor ... – pek
Los únicos otros ejemplos serían similares a iguales donde se le da otra instancia de su clase como argumento. En cuanto a por qué Java lo hizo, es bastante estándar en los lenguajes OO: C++ funciona de la misma manera. Sobrecarga == en C++: http://artis.imag.fr/~Xavier.Decoret/resources/C++/operator==.html –
¿Tan ... es una trivia bastante inútil? – pek