10.05.2014 Views

programación i - Universidad ORT Uruguay

programación i - Universidad ORT Uruguay

programación i - Universidad ORT Uruguay

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!