SlideShare una empresa de Scribd logo
1 de 4
Universidad Católica de Salta                                                            Clases y subclases
                                                 Lenguajes II

                                        Clases y subclases 1

       El concepto de herencia conduce a una estructura jerárquica de clases o estructura de árbol, lo
cual significa que en la programación orientada a objetos todas las relaciones entre clases
deben ajustarse a dicha estructura. Se pueden definir nuevas clases basadas en clases existentes lo
cual facilita reutilizar código previamente desarrollado.

       Java permite múltiples niveles de herencia pero no permite que una clase derive de varias, o sea
que cada clase tiene sólo una clase padre.

       En Java, la clase padre de todas las clases es la clase Object y cuando una clase no tiene una
superclase explícita, su superclase es Object.

       De manera automática una subclase hereda las variables y métodos de su superclase, además
una subclase puede agregar nueva funcionalidad (variables y métodos) que la superclase no tenía.

       Los constructores no son heredados, pero sí llamados. Es decir, cuando se construye un objeto
de la clase derivada se llama al constructor de la clase derivada, pero antes de comenzar a ejecutarse
se llama al constructor de la clase base, que tras ejecutarse continua la ejecución del constructor de
la clase derivada.

       Para crear una subclase, se incluye la palabra clave extends en la declaración de la clase.

       Ejemplo

       class nombreSubclase extends nombreSuperclase
       {


       }




       En el siguiente ejemplo, las clases Administrativo y Docente heredan de la clase Empleado.
Empleado es la superclase, Administrativo y Docente son subclases. Empleado es una clase de la
que derivan 2 subclases. En cada una de las clases se mencionan las variables miembro y algunos de
sus métodos. En ninguna de ellas hay constructor por lo tanto se usan los constructores por defecto.
       En la clase Docente se han incluido los métodos mostrarTodo1 y mostrarTodo2                    para
ejemplificar el uso de la palabra super. Esta palabra reservada sirve para indicar que una variable o
un método es de la superclase.

1
    Material sacado de Internet

                                                                                         C.C. Marta Ferrari
                                                      1
Universidad Católica de Salta                                                              Clases y subclases
                                                   Lenguajes II



                                                Empleado
                                           nombre
                                           fechIngreso

                                           mostrarNombre
                                           setNombre
                                           getNombre


       Administrativo                                                                   Docente
     categoría                                                                 titulo
     turno
                                                                               mostrarTitulo
     mostrarCategoria                                                          setTitulo
     setCategoria                                                              getTitulo
     getCategoria                                                              mostrarTodo1
                                                                               mostrarTodo2

public class Empleado           /* SuperClase */

{ protected String nombre;                          // Importante: las variables nombre y fechIngreso
  protected long fechIngreso; //aaaammdd            // llevan el calificador protected para que los
                                                    // métodos de las subclases puedan acceder a ellos
public void mostrarNombre ()
{ System.out.print(nombre);
  System.out.print("n");
}

public void mostrarFechaIngreso ()
{ System.out.print(fechIngreso % 100);
  System.out.print(" / ");
  System.out.print(fechIngreso/100 % 100);
  System.out.print(" / ");
  System.out.println(fechIngreso / 100);
}

public void setNombre (String nom)
 { nombre = nom;
 }

public String getNombre ()
 {return nombre;
 }

public void setFechaIngreso (long fech)
{ fechIngreso = fech;
}

}

                                                                                           C.C. Marta Ferrari
                                                        2
Universidad Católica de Salta                                                      Clases y subclases
                                           Lenguajes II


public class Administrativo extends Empleado        /* SubClase */
{ private int categoria;
  private char turno;


public void mostrarCategoria ()
 { System.out.print(categoria);
   System.out.print("n");

 }
public void setCategoria (int cat)
 { categoria = cat;
 }

public int getCategoria ()
 {return categoria;
 }


}


public class Docente extends Empleado /* SubClase */
{
  private String titulo;

 public void mostrarTitulo ()
{ System.out.print(titulo);
   System.out.print("n");
}

public void setTitulo (String tit)
 { titulo = tit;
 }

public String getTitulo ()
 {return titulo;
 }

public void mostrarTodo1 ()
{ System.out.print(titulo + ' ');    // Importante: obsérvese el uso de la palabra super para
  super.mostrarNombre();             // llamar a los métodos de la superclase
  super.mostrarFechaIngreso();
}

public void mostrarTodo2 ()
{ System.out.print(titulo + ' ');
   System.out.print(nombre);
   System.out.print("n");

                                                                                   C.C. Marta Ferrari
                                                3
Universidad Católica de Salta                                                             Clases y subclases
                                                   Lenguajes II

    System.out.print(fechIngreso % 100);
    System.out.print(" / ");
    System.out.print(fechIngreso/100 % 100);
    System.out.print(" / ");
    System.out.println(fechIngreso / 100);
}

}

Nota: si las variables nombre y fechIngreso de la superclase se declaran con el calificador private
en lugar de protected entonces para acceder a ellas se deben usar los métodos de la superclase.
O sea si :

public class Empleado           /* SuperClase */

{ private String nombre;                           // Importante: las variables nombre y fechIngreso
  private long fechIngreso; //aaaammdd             // llevan el calificador private
                                                   // Solamente los métodos de la clase tienen acceso
    .
    .
    .
}

Entonces el método mostrarTodo2() de la clase Docentes debería hacerse así:

public void mostrarTodo2 ()
{ System.out.print(titulo + ' ');
   System.out.print( getNombre () );         // el nombre se consigue a través del método
   System.out.print("n");
   super.mostrarFechaIngreso();
}




                                                                                          C.C. Marta Ferrari
                                                        4

Más contenido relacionado

La actualidad más candente

Metodologia cascada pura
Metodologia cascada puraMetodologia cascada pura
Metodologia cascada pura
Sergio Olivares
 
Tipos de virtualizacion
Tipos de virtualizacionTipos de virtualizacion
Tipos de virtualizacion
erikita1702
 
Unidad no. 2 búsqueda en espacio de estados
Unidad no. 2   búsqueda en espacio de estadosUnidad no. 2   búsqueda en espacio de estados
Unidad no. 2 búsqueda en espacio de estados
Milton Klapp
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
negroues
 

La actualidad más candente (20)

Programación modular
Programación modularProgramación modular
Programación modular
 
Metodologia cascada pura
Metodologia cascada puraMetodologia cascada pura
Metodologia cascada pura
 
Jlex y cup en java
Jlex y cup en javaJlex y cup en java
Jlex y cup en java
 
Tipos de virtualizacion
Tipos de virtualizacionTipos de virtualizacion
Tipos de virtualizacion
 
Expo Sistemas Operativos
Expo Sistemas OperativosExpo Sistemas Operativos
Expo Sistemas Operativos
 
Preguntas JAVA.docx
Preguntas JAVA.docxPreguntas JAVA.docx
Preguntas JAVA.docx
 
Unidad no. 2 búsqueda en espacio de estados
Unidad no. 2   búsqueda en espacio de estadosUnidad no. 2   búsqueda en espacio de estados
Unidad no. 2 búsqueda en espacio de estados
 
Algoritmo divide y vencerás
Algoritmo divide y vencerásAlgoritmo divide y vencerás
Algoritmo divide y vencerás
 
FUNDAMENTOS DE UML 2
FUNDAMENTOS DE UML 2FUNDAMENTOS DE UML 2
FUNDAMENTOS DE UML 2
 
Isomorfos y arboles
Isomorfos y arbolesIsomorfos y arboles
Isomorfos y arboles
 
Arreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeansArreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeans
 
Metodología CommonKADS
Metodología CommonKADSMetodología CommonKADS
Metodología CommonKADS
 
Simulación - Unidad 2 numeros pseudoaleatorios
Simulación - Unidad 2 numeros pseudoaleatoriosSimulación - Unidad 2 numeros pseudoaleatorios
Simulación - Unidad 2 numeros pseudoaleatorios
 
Programacion MODULAR
Programacion MODULARProgramacion MODULAR
Programacion MODULAR
 
Sistemas operativos
Sistemas operativos Sistemas operativos
Sistemas operativos
 
Sistema de actividad humana
Sistema de actividad humanaSistema de actividad humana
Sistema de actividad humana
 
Gramaticas y lic
Gramaticas y licGramaticas y lic
Gramaticas y lic
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
 
Introducción a la Programación No Lineal
Introducción a la Programación No LinealIntroducción a la Programación No Lineal
Introducción a la Programación No Lineal
 
Tabla De Transicion
Tabla De TransicionTabla De Transicion
Tabla De Transicion
 

Destacado

Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
martaferrari
 
Mentefactos[1]
Mentefactos[1]Mentefactos[1]
Mentefactos[1]
ruizstvn07
 
Casos de Uso ejercicios
Casos de Uso ejerciciosCasos de Uso ejercicios
Casos de Uso ejercicios
Walter Chacon
 
diagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistemadiagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistema
Universidad Tecnológica
 
Teoría, principios, modelos,leyes
Teoría, principios, modelos,leyesTeoría, principios, modelos,leyes
Teoría, principios, modelos,leyes
Zaida Rivera
 
UML - Casos de Uso y Diagramas de Clase
UML - Casos de Uso y Diagramas de ClaseUML - Casos de Uso y Diagramas de Clase
UML - Casos de Uso y Diagramas de Clase
Guillermo Díaz
 

Destacado (20)

Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Tipología textual y tarifas
Tipología textual y tarifasTipología textual y tarifas
Tipología textual y tarifas
 
PADRÓN GENERAL 3
PADRÓN GENERAL 3PADRÓN GENERAL 3
PADRÓN GENERAL 3
 
Mentefactos[1]
Mentefactos[1]Mentefactos[1]
Mentefactos[1]
 
Diagramas De Caso De Uso
Diagramas De Caso De UsoDiagramas De Caso De Uso
Diagramas De Caso De Uso
 
Importancia de la clasificación como método comparativo
Importancia de la clasificación como método comparativoImportancia de la clasificación como método comparativo
Importancia de la clasificación como método comparativo
 
Analisis y diseño de sistemas
Analisis y diseño de sistemasAnalisis y diseño de sistemas
Analisis y diseño de sistemas
 
Casos de Uso ejercicios
Casos de Uso ejerciciosCasos de Uso ejercicios
Casos de Uso ejercicios
 
OOSE
OOSEOOSE
OOSE
 
Clases De Palabras ( Categorias Gramaticales)
Clases De Palabras  ( Categorias Gramaticales)Clases De Palabras  ( Categorias Gramaticales)
Clases De Palabras ( Categorias Gramaticales)
 
Clasificación Jerárquica
Clasificación JerárquicaClasificación Jerárquica
Clasificación Jerárquica
 
Diagrama de casos de usos
Diagrama de casos de usosDiagrama de casos de usos
Diagrama de casos de usos
 
El texto informativo
El texto informativoEl texto informativo
El texto informativo
 
diagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistemadiagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistema
 
Modelo Entidad Relación Extendido.
Modelo Entidad Relación Extendido.Modelo Entidad Relación Extendido.
Modelo Entidad Relación Extendido.
 
UML: CASOS DE USO
UML: CASOS DE USOUML: CASOS DE USO
UML: CASOS DE USO
 
Teoría, principios, modelos,leyes
Teoría, principios, modelos,leyesTeoría, principios, modelos,leyes
Teoría, principios, modelos,leyes
 
UML - Casos de Uso y Diagramas de Clase
UML - Casos de Uso y Diagramas de ClaseUML - Casos de Uso y Diagramas de Clase
UML - Casos de Uso y Diagramas de Clase
 
Categorias Gramaticales
Categorias GramaticalesCategorias Gramaticales
Categorias Gramaticales
 

Similar a Clases y subclases

Herencia en java
Herencia en javaHerencia en java
Herencia en java
jbersosa
 
Programacion 3 unidad ii
Programacion 3   unidad iiProgramacion 3   unidad ii
Programacion 3 unidad ii
Irving Trigo
 
DAW - Desarrollo de clases
DAW - Desarrollo de clasesDAW - Desarrollo de clases
DAW - Desarrollo de clases
vay82
 
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Kositha Jimhiz G
 

Similar a Clases y subclases (20)

Herencia en java
Herencia en javaHerencia en java
Herencia en java
 
Cuarta sesion herencia y polimorfismo-explicacion anibal
Cuarta sesion herencia y polimorfismo-explicacion anibalCuarta sesion herencia y polimorfismo-explicacion anibal
Cuarta sesion herencia y polimorfismo-explicacion anibal
 
JAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIAJAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIA
 
Clase viii
Clase viiiClase viii
Clase viii
 
Programacion 3 unidad ii
Programacion 3   unidad iiProgramacion 3   unidad ii
Programacion 3 unidad ii
 
Programacion 3 unidad ii
Programacion 3   unidad iiProgramacion 3   unidad ii
Programacion 3 unidad ii
 
Unidad 2 poo_clases_y_objetos
Unidad 2 poo_clases_y_objetosUnidad 2 poo_clases_y_objetos
Unidad 2 poo_clases_y_objetos
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 
Guia poo
Guia pooGuia poo
Guia poo
 
U8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdfU8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdf
 
Clases en Java y todo lo relacionado
Clases en Java y todo lo relacionadoClases en Java y todo lo relacionado
Clases en Java y todo lo relacionado
 
9.herencia en java
9.herencia en java9.herencia en java
9.herencia en java
 
DAW - Desarrollo de clases
DAW - Desarrollo de clasesDAW - Desarrollo de clases
DAW - Desarrollo de clases
 
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
 
Herencia y Polimorfismo
Herencia y PolimorfismoHerencia y Polimorfismo
Herencia y Polimorfismo
 
Laboratorio clase abstract
Laboratorio clase abstractLaboratorio clase abstract
Laboratorio clase abstract
 
10.herencia en c++
10.herencia en c++10.herencia en c++
10.herencia en c++
 
JAVA OO - TEMA 01 - CLASES Y OBJETOS
JAVA OO - TEMA 01 - CLASES Y OBJETOSJAVA OO - TEMA 01 - CLASES Y OBJETOS
JAVA OO - TEMA 01 - CLASES Y OBJETOS
 
Polimorfism oo
Polimorfism ooPolimorfism oo
Polimorfism oo
 
Guía Herencia PO_O
Guía Herencia PO_OGuía Herencia PO_O
Guía Herencia PO_O
 

Más de martaferrari

Más de martaferrari (9)

Clases en java
Clases en javaClases en java
Clases en java
 
Eclipse para novatos java
Eclipse para novatos javaEclipse para novatos java
Eclipse para novatos java
 
Primer programa en java
Primer programa en javaPrimer programa en java
Primer programa en java
 
Tad
TadTad
Tad
 
Clase 5pdf
Clase 5pdfClase 5pdf
Clase 5pdf
 
Clase 4pdf
Clase 4pdfClase 4pdf
Clase 4pdf
 
Clase 3pdf
Clase 3pdfClase 3pdf
Clase 3pdf
 
Clase 2pdf
Clase 2pdfClase 2pdf
Clase 2pdf
 
Clase 1pdf
Clase 1pdfClase 1pdf
Clase 1pdf
 

Clases y subclases

  • 1. Universidad Católica de Salta Clases y subclases Lenguajes II Clases y subclases 1 El concepto de herencia conduce a una estructura jerárquica de clases o estructura de árbol, lo cual significa que en la programación orientada a objetos todas las relaciones entre clases deben ajustarse a dicha estructura. Se pueden definir nuevas clases basadas en clases existentes lo cual facilita reutilizar código previamente desarrollado. Java permite múltiples niveles de herencia pero no permite que una clase derive de varias, o sea que cada clase tiene sólo una clase padre. En Java, la clase padre de todas las clases es la clase Object y cuando una clase no tiene una superclase explícita, su superclase es Object. De manera automática una subclase hereda las variables y métodos de su superclase, además una subclase puede agregar nueva funcionalidad (variables y métodos) que la superclase no tenía. Los constructores no son heredados, pero sí llamados. Es decir, cuando se construye un objeto de la clase derivada se llama al constructor de la clase derivada, pero antes de comenzar a ejecutarse se llama al constructor de la clase base, que tras ejecutarse continua la ejecución del constructor de la clase derivada. Para crear una subclase, se incluye la palabra clave extends en la declaración de la clase. Ejemplo class nombreSubclase extends nombreSuperclase { } En el siguiente ejemplo, las clases Administrativo y Docente heredan de la clase Empleado. Empleado es la superclase, Administrativo y Docente son subclases. Empleado es una clase de la que derivan 2 subclases. En cada una de las clases se mencionan las variables miembro y algunos de sus métodos. En ninguna de ellas hay constructor por lo tanto se usan los constructores por defecto. En la clase Docente se han incluido los métodos mostrarTodo1 y mostrarTodo2 para ejemplificar el uso de la palabra super. Esta palabra reservada sirve para indicar que una variable o un método es de la superclase. 1 Material sacado de Internet C.C. Marta Ferrari 1
  • 2. Universidad Católica de Salta Clases y subclases Lenguajes II Empleado nombre fechIngreso mostrarNombre setNombre getNombre Administrativo Docente categoría titulo turno mostrarTitulo mostrarCategoria setTitulo setCategoria getTitulo getCategoria mostrarTodo1 mostrarTodo2 public class Empleado /* SuperClase */ { protected String nombre; // Importante: las variables nombre y fechIngreso protected long fechIngreso; //aaaammdd // llevan el calificador protected para que los // métodos de las subclases puedan acceder a ellos public void mostrarNombre () { System.out.print(nombre); System.out.print("n"); } public void mostrarFechaIngreso () { System.out.print(fechIngreso % 100); System.out.print(" / "); System.out.print(fechIngreso/100 % 100); System.out.print(" / "); System.out.println(fechIngreso / 100); } public void setNombre (String nom) { nombre = nom; } public String getNombre () {return nombre; } public void setFechaIngreso (long fech) { fechIngreso = fech; } } C.C. Marta Ferrari 2
  • 3. Universidad Católica de Salta Clases y subclases Lenguajes II public class Administrativo extends Empleado /* SubClase */ { private int categoria; private char turno; public void mostrarCategoria () { System.out.print(categoria); System.out.print("n"); } public void setCategoria (int cat) { categoria = cat; } public int getCategoria () {return categoria; } } public class Docente extends Empleado /* SubClase */ { private String titulo; public void mostrarTitulo () { System.out.print(titulo); System.out.print("n"); } public void setTitulo (String tit) { titulo = tit; } public String getTitulo () {return titulo; } public void mostrarTodo1 () { System.out.print(titulo + ' '); // Importante: obsérvese el uso de la palabra super para super.mostrarNombre(); // llamar a los métodos de la superclase super.mostrarFechaIngreso(); } public void mostrarTodo2 () { System.out.print(titulo + ' '); System.out.print(nombre); System.out.print("n"); C.C. Marta Ferrari 3
  • 4. Universidad Católica de Salta Clases y subclases Lenguajes II System.out.print(fechIngreso % 100); System.out.print(" / "); System.out.print(fechIngreso/100 % 100); System.out.print(" / "); System.out.println(fechIngreso / 100); } } Nota: si las variables nombre y fechIngreso de la superclase se declaran con el calificador private en lugar de protected entonces para acceder a ellas se deben usar los métodos de la superclase. O sea si : public class Empleado /* SuperClase */ { private String nombre; // Importante: las variables nombre y fechIngreso private long fechIngreso; //aaaammdd // llevan el calificador private // Solamente los métodos de la clase tienen acceso . . . } Entonces el método mostrarTodo2() de la clase Docentes debería hacerse así: public void mostrarTodo2 () { System.out.print(titulo + ' '); System.out.print( getNombre () ); // el nombre se consigue a través del método System.out.print("n"); super.mostrarFechaIngreso(); } C.C. Marta Ferrari 4