Limitaciones en la
herencia en Java Todos los
campos y métodos de una clase son siempre accesibles para el código de la misma clase. Para controlar el entrada desde otras clases, y para controlar la herencia por las subclase, los miembros (
atributos y metodos) de las clases tienen tres modificadores probables de
control de entrada: public: Los miembros declarados public son accesibles en cualquier espacio en que sea accesible la clase, y son heredados por las subclases. private: Los miembros declarados private son accesibles solo en la particular clase. protected: Los miembros declarados protected son accesibles sólo para sus subclases Por ejemplo: class Padre { // Hereda de Object // Atributos private int numeroFavorito, nacidoHace, dineroDisponible; // Métodos public int getApuesta() { return numeroFavorito; } protected int getEdad() { return nacidoHace; } private int getSaldo() { return dineroDisponible; } } class Hija extends Padre { // Definición } class Visita { // Definición } En este ejemplo, un objeto de la clase Hija, hereda los tres atributos (numeroFavorito, nacidoHace y dineroDisponible) y los tres métodos ( getApuesta(), getEdad() y getSaldo() ) de la clase Padre, y podrá invocarlos. Cuando se llame al método getEdad() de un objeto de la clase Hija, se devolverá el valor de la variable de instancia nacidoHace de ese objeto, y no de uno de la clase Padre. Sin embargo, un objeto de la clase Hija, no podrá invocar al método getSaldo() de un objeto de la clase Padre, con lo que se evita que el Hijo conozca el estado de la cuenta corriente de un Padre. La clase Visita, solo podra alcanzar al metodo getApuesta(), para averiguar el numero favorito de un Padre, pero de ninguna forma podra
conocer ni su saldo, ni su edad (seria una indiscrecion, ¿no?).