programación i - Universidad ORT Uruguay
programación i - Universidad ORT Uruguay
programación i - Universidad ORT Uruguay
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Programación I 85<br />
8.3.6 Object<br />
En Java, toda clase hereda automáticamente de una clase denominada Object. No es necesario<br />
indicar que se extiende Object. La clase Object tiene un conjunto de métodos útiles que se<br />
heredan y que pueden ser redefinidos según las necesidades. Un par de métodos interesantes son<br />
el método toString de impresión ya referido y el método equals, utilizado para chequear si dos<br />
objetos "lucen" iguales.<br />
8.3.7 Abstract<br />
Una clase abstracta es una clase que no se espera que tenga instancias. Si intento crear<br />
instancias, no lo permite. Por ejemplo, queremos que la clase Material sea abstracta:<br />
public abstract class Material {<br />
8.3.8 Métodos abstractos<br />
En el caso de Material, suponer que quiero mostrar un slogan para Libro, Revista, Diario, etc.<br />
Quiero que todas las clases tengan el método, pero en Material que no diga nada.<br />
¿Cómo lo hago? Una solución es poner que en Material devuelva un String vacío y que en cada<br />
subclase ponga lo necesario. Funciona, pero no obliga a que lo ponga en todas las subclases.<br />
Una opción mejor es poner en Material:<br />
public abstract String slogan();<br />
Un método abstracto es un método que no contiene implementación. Si se intenta poner código,<br />
no compila. Obliga a que se indique que la clase es abstracta.<br />
Las subclases no abstractas derivadas de una clase abstracta deben hacer el override<br />
(sobreescritura) de todos los métodos abstractos de la clase padre (si no se definen, la considera<br />
abstracta). O sea, el método abstracto obliga a definir en la subclase ese mismo método con una<br />
implementación.<br />
En el ejemplo, la clase Publicación se pasa a abstract y en Libro se agrega:<br />
public String slogan() {<br />
return "¡Nada como un buen libro!";<br />
}<br />
8.3.9 Final<br />
Como opción opuesta, para evitar que se redefina un cierto método, puedo definirlo con final.<br />
Por ejemplo, si en la clase Material se indica:<br />
public final String general() {<br />
return "general";<br />
}<br />
y se intenta redefirlo en Publicacion, dice que no puede ser sobreescrito.