Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.

Slides:



Advertisements
Presentaciones similares
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Advertisements

ESTRUCTURA DE DATOS Unidad 01 Conceptos Previos.
Curso de java básico (scjp)
Curso de java básico (scjp)
Definición de Clases y Variables de referencia.
EXCEPCIONES UNIDAD 5.
Programación Interactiva Fundamentos de Java. 2 Ejecución de un programa Para Java una clase ejecutable es aquella que es pública y tiene un método main()
Herencia en C#.
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.1 Clases y Objetos Silvia Larrayoz Leire Urriza.
Lenguaje de programación Java
SCJP Sun Certified Programmer for Java 6
Introducción Abdelahad, Corina Natalia Abdelahad, Yanina Zoraida
Conceptos más avanzados de Programación Orientada a Objetos Programación 2005 Licenciatura de Lingüística y Nuevas Tecnologías.
Arquitectura CLARO-TECNOTREE CAPITULO 4: Excepciones
Capitulo 4 Excepciones.
Informática II Prof. Dr. Gustavo Patiño MJ
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Herencia y Polimorfismo
Tratamiento de listas en Java
Aplicación del paradigma orientado a objetos
Diseño y programación de
Rosalía Laza Fidalgo Reyes Pavón Rial Curso
Objetos y Clases en Java
Programación Orientada a Objetos en Java
Marzo 2007 Lenguajes Visuales Clase III.
HERENCIA.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Introducción a la Programación Orientada a Objetos Redefinición y Sobrecarga Dada la siguiente jerarquía de clases: Alfa Delta Beta.
Herencia e Interfaces.
Programación Orientada a Objetos usando C++
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Medio de tele-comunicación
Modificadores.
POO Java Módulo 3 Elementos de programas Identificadores
Herencia y Polimorfismo en JAVA
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
6. Herencia. Clases abstractas. Genericidad
Variables polimórficas (plantillas): definición, uso y aplicación
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
SCJP Sun Certified Programmer for Java 6
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Jerarquía de Clases: Herencia, Composición y Polimorfismo
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Patrones Creacionales
Introducción a Java (2ª parte) - excepciones, colecciones, i/o, … -
Diplomado Desarrollo de Aplicaciones en Internet
Clases y objetos. La unidad fundamental del lenguaje Java es la clase, que proporciona la estructura de los objetos y mecanismos para fabricarlos, a partir.
Programación Orientada a Objetos
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
FACULTAD DE ESTUDIOS SUPERIORES ARAGON
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Informatica II1 Clases Extendidas La clase extendida hereda los campos y métodos de la clase que ha sido extendida. La clase original se conoce como superclase.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
Programación orientada a objetos
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Programación orientada a objetos Capítulo 9 Algo mas sobre herencias.
Clases “ Es una Abstracción de un elemento del mundo real ”
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
Prof. Manuel B. Sánchez. Es un mecanismo y uno de los pilares de la POO que permite definir nuevas clases a partir de otras preexistentes. La Herencia.
Transcripción de la presentación:

Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase extendida como subclase.

Clases Extendidas Una clase extendida se puede usar en cualquier lugar en que se podía usar la superclase. Esto se conoce como polimorfismo. Clases diferentes, que se denominan polimórficas pueden implementar métodos con el mismo nombre. Es decir objetos de clases distintas pueden entender mensajes iguales. Las clases extendidas, en Java, se declaran con la claúsula extends.

Clases Extendidas En Java todos los ejemplos que hemos visto hasta ahora extienden implicitamente de la clase Object. Object es la raíz de todas las clases. Esta clase declara métodos que heredan todas las clases. Las variables de clase Object pueden referenciar a cualquier objeto.

Ejemplo de clases extendidas import java.io.*; class vehiculo {protected long idnum; protected String nombre = "sin nombre"; private static long sigId = 0; public vehiculo( ) { idnum = sigId++; } protected long getsigId(){ return sigId;

Ejemplo de clases extendidas public static void main(String [] args) { vehiculo auto = new vehiculo(); auto.nombre = "Miauto"; vehiculo colectivo = new vehiculo(); colectivo.nombre = "Micolectivo"; System.out.println("Vehiculo" + auto.nombre); System.out.println("Vehiculo" + colectivo.nombre); }

Ejemplo de clases extendidas class Vehiculopasajeros extends vehiculo { int asientos = 50; int ocupados; public Vehiculopasajeros( int disponibles, int ocu){ super(); asientos = disponibles; ocupados = ocu; }

Ejemplo de clases extendidas public static void main(String [] args) { int cant = 60; int ocu = 0; Vehiculopasajeros Urbano = new Vehiculopasajeros(cant,ocu); System.out.println(" sigid de Urbano : " + Urbano.getsigId()); Vehiculopasajeros Inter = new Vehiculopasajeros(cant,ocu); System.out.println(" sigid de Inter : " + Inter.getsigId());

Ejemplo de clases extendidas Urbano.nombre = "Cinta de Plata"; Inter.nombre = "Turicenter"; System.out.println("Vehiculo de pasajeros : " + Urbano.nombre); System.out.println(); System.out.println("Vehiculo de pasajeros : " + Urbano.asientos); }

Significado de protected Un miembro protegido se puede acceder desde una clase por medio de referencias de objeto que sean del mismo tipo que la clase o de sus clases extendidas. vehiculo Vehiculopasajeros puede acceder a nombre, a través de una referencia a Vehiculopasajeros o una referencia a combi. No puede acceder a través de una referencia a auto. protected nombre Vehiculopasajeros auto combi

Significado de protected Si nombre fuese estático, puedo acceder a él a través de cualquier referencias a cualquier tipo vehiculo. Los miembros declarados protected también son accesibles a todo el código de paquete. El mismo tratamiento explicado con los campos, ocurre con los métodos.

Constructores en las clases extendidas La clase extendida debe invocar uno de los constructores de la superclase, para que la parte del objeto que controla la superclase sea construido en forma correcta. Para ello se puede usar super( ); Si no se invoca en forma explícita un constructor de la superclase, se invoca en forma automática el constructor sin argumentos de la superclase, por lo cual la superclase debería tener un constructor no-arg.

Valores iniciales para los campos Tipos Valores iniciales numericos 0 char /u0000 boolean false referencias a objetos null

Orden de ejecución 1. Invocar un constructor de la superclase. 2. Inicializar los campos usando sentencias de inicialización. 3. Ejecutar el cuerpo del constructor.

Anulación de métodos y ocultamiento de campos (I) anulan Métodos sobrecargan Campos ocultan

Anulación y sobrecarga de métodos Sobrecargar un método es tener más de un método con el mismo nombre pero con signaturas distintas. Anular un método es sustituir la implementación de un método de la superclase, por una implementación propia para la subclase. Las signaturas deben ser idénticas y el tipo devuelto también deben ser iguales. La claúsula throws del método anulador puede listar menos tipos de excepciones que la claúsula throws del método que se anuló, pero nunca más.

Anulación y sobrecarga de métodos Los métodos anulados tienen sus propios especificadores de acceso. Una clase extendida puede modificar el acceso de los métodos de la superclase, pero sólo si otorga más acceso. Un método declarado protected puede ser redeclarado protected o public pero no private.

Anulación y sobrecarga de métodos Si una subclase define un método de clase, con la misma signatura que un método de clase de la superclase, el método de la subclase oculta al de la superclase. La diferencia entre sobrecargar y ocultar es importante

Anulación y sobrecarga de métodos public class Animal { public static void testClassMethod() { System.out.println("The class method in Animal."); } public void testInstanceMethod() { System.out.println("The instance method in Animal."); } }

Anulación y sobrecarga de métodos public class Cat extends Animal { public static void testClassMethod() { System.out.println("The class method in Cat."); } public void testInstanceMethod() { System.out.println("The instance method in Cat."); } public static void main(String[] args) { Cat myCat = new Cat(); Animal myAnimal = myCat; Animal.testClassMethod(); myAnimal.testInstanceMethod(); } }

Anulación y sobrecarga de métodos The class method in Animal. The instance method in Cat. La implementación del método de clase que se invoca es el de la superclase. La implementación del método de instancia que se invoca es el de la subclase.

Anulación de métodos y ocultamiento de campos Los campos no se pueden anular sólo se pueden ocultar. Para ocultarlo basta con declarar un campo del mismo nombre, que un campo que ya existe en la superclase. Para acceder al campo de la superclase utilice super o una referencia del tipo de la superclase. No es recomendable.

Anulación de métodos de instancia y ocultamiento de campos Cuando se invoca un método sobre un objeto, el tipo real del objeto determina que implementación se usa. Cuando se accede a un campo se usa el tipo declarado de la referencia. Tengo una clase A y una clase B que extiende de A. B segundo =new B( ); Determina la referencia al objeto Determina el tipo real del objeto

Anulación de métodos y ocultamiento de campos La clase A, tiene un campo String x, y la clase B tiene también un campo String x,que oculta al campo de la superclase, y con un método de instancia mostrar que esta anulado en la clase extendida. B primero = new B( ); (B: clase extendida) A segundo = primero; (A superclase) primero.mostrar( ); segundo.mostrar( ); (siempre se invoca el método del tipo real del objeto, en este caso el método implementado en B). Primero.x; ( se refiere al campo de B) Segundo.x ( se refiere al campo de A)

Object como superclase public boolean equals(Object obj) protected void finalize() throws Throwable public String toString()      

Object como superclase: equals public class Book { ... public boolean equals(Object obj) { if (obj instanceof Book) return ISBN.equals((Book)obj.getISBN()); else return false; } }      

Object como superclase: finalize finalize : para asegurar que los recursos utilizados quedan en un estado consistente toString: retorna un objeto en forma de String. Esto depende exclusivamente del objeto, razón por la cual debe sobrecargarse el método.

Clases y métodos finales En un método indica que el mismo no puede anularse en las subclases. En una clase indica que no pueden extenderse clases de ellas.

Métodos y clases abstractas Una clase abstracta es una que se declara abstract: abstract class figura{ ..................... } y puede o no contener métodos abstractos. Una clase abstracta no puede ser instanciada.

Métodos y clases abstractas Un método abstracto es uno que es declarado pero no implementado. Si una clase incluye métodos abstractos debe declararse como abstracta. public abstract class figura { abstract void dibujarse (double x, double y); ................. }