programación i - Universidad ORT Uruguay
programación i - Universidad ORT Uruguay
programación i - Universidad ORT Uruguay
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Programación I 83<br />
}<br />
public static void main(String[] args) {<br />
Material m = new Material();<br />
Publicacion p = new Publicacion();<br />
Libro l = new Libro();<br />
System.out.println(m);<br />
System.out.println(p);<br />
System.out.println(l);<br />
}<br />
Algunas de las cosas que se observan son:<br />
- se accede directamente a variables, no usa se usa métodos (ejemplo: en el constructor de<br />
Publicación).<br />
- Aparece palabra extends. Indica que una clase extiende a otra, es subclase.<br />
Si se intenta compilar este código, no anda. El problema es por intentar acceder a un atributo<br />
privado desde otra clase. Profundizaremos en la visibilidad.<br />
8.3.2 Visibilidad en profundidad<br />
Hay distintos modificadores de visibilidad. Los modificadores de visibilidad tienen dos<br />
aspectos:<br />
- herencia: determina si un método o variable puede ser referido en una subclase;<br />
- acceso: determina el grado de encapsulación, o sea el alcance en el cual el método o<br />
variable puede ser directamente referido. Todos los métodos y variables son accesibles desde la<br />
propia clase en que son declarados.<br />
modificador clases métodos y variables<br />
no poner ninguno desde el package heredado por subclases del mismo package<br />
accesible desde mismo package<br />
public visible de todos lados heredado por toda subclase<br />
accesible de cualquier lado<br />
private no aplicable no heredado por subclase<br />
no accesible desde ninguna otra clase<br />
protected no aplicable heredado por todas las subclases (en<br />
cualquier lado)<br />
accesible desde clases del package<br />
Probar pasar a protected y observar que anda. ¿Cómo se que querré usar directamente una<br />
variable en una subclase? La mejor opción es siempre usar métodos para acceder a las variables.<br />
En general se recomienda poner las variables privadas y agregar métodos públicos para su<br />
acceso.<br />
8.3.3 Constructores en detalle<br />
Observar los constructores. ¿Queda práctico tener que inicializar todo cada vez? Hagamos la<br />
siguiente prueba: agregar writes de control (sentencias de impresión que indican por dónde se<br />
está ejecutando) en los constructores. Por ejemplo, en el constructor de material agregar:<br />
System.out.println("Estoy en el constructor de Material");. En forma similar, agregar en<br />
Publicación y en Libro. Observar que automáticamente los llama cuando creo un libro.<br />
Modificar los constructores: