Está en la página 1de 19

Tecnológico Nacional De México

Tecnológico De Estudios
Superiores
Huixquilucan
Maly Farías López
3202
Ingenieria En Sistemas
Computacionales
Resumen de clase de base y
derivada,herencia simple y multiple
La herencia es una propiedad esencial de la Programación Orientada a Objetos que consiste
en la creación de nuevas clases a partir de otras ya existentes. Este término ha sido prestado
de la Biología donde afirmamos que un niño tiene la cara de su padre, que ha heredado
ciertas facetas físicas o del comportamiento de sus progenitores.

Es la característica fundamental que distingue un lenguaje orientado a objetos, como el C+


+ o Java, de otro convencional como C, BASIC, etc. Java permite heredar a las clases
características y conductas de una o varias clases denominadas base. Las clases que heredan
de clases base se denominan derivadas, estas a su vez pueden ser clases bases para otras
clases derivadas. Se establece así una clasificación jerárquica, similar a la existente en
Biología con los animales y las plantas. Permite la reutilización del código. Una vez que
una clase ha sido depurada y probada, el código fuente de dicha clase no necesita
modificarse. Su funcionalidad se puede cambiar derivando una nueva clase que herede la
funcionalidad de la clase base y le añada otros comportamientos. Reutilizando el código
existente, el programador ahorra tiempo y dinero, ya que solamente tiene que verificar la
nueva conducta que proporciona la clase derivada.

Clase Base

Se conoce como clase base a una clase que va a heredar sus propiedades (variables) y
funcionalidades (métodos) a otras clases; por otro lado, se conoce como clase derivada a
una clase que se implementa mediante la reutilización de las propiedades y funcionalidades
que se heredan de una (o varias) clase base.

Ejemplo

Supongamos que tenemos una clase que describe la conducta de una ventana muy simple,
aquella que no dispone de título en la parte superior, por tanto no puede desplazarse, pero si
cambiar de tamaño actuando con el ratón en los bordes derecho e inferior.
La clase Ventana tendrá los siguientes miembros dato: la posición x e y de la ventana, de su
esquina superior izquierda y las dimensiones de la ventana: ancho y alto.

public class Ventana {


protected int x;
protected int y;
protected int ancho;
protected int alto;
public Ventana(int x, int y, int ancho, int alto) {
this.x=x;
this.y=y;
this.ancho=ancho;
this.alto=alto;
}
//...
}

Las funciones miembros, además del constructor serán las siguientes: la


función mostrar que simula una ventana en un entorno gráfico, aquí solamente nos muestra
la posición y las dimensiones de la ventana.

public void mostrar(){


System.out.println("posición : x="+x+", y="+y);
System.out.println("dimensiones : w="+ancho+", h="+alto);
}

La función cambiarDimensiones que simula el cambio en la anchura y altura de la ventana.

public void cambiarDimensiones(int dw, int dh){


ancho+=dw;
alto+=dh;
}

El código completo de la clase base Ventana, es el siguiente

package ventana;

public class Ventana { protected int x; protected int y; protected int ancho; protected int
alto;
public Ventana(int x, int y, int ancho, int alto) { this.x=x;
this.y=y; this.ancho=ancho; this.alto=alto;
}
public void mostrar() {
System.out.println("posición: x="+x+", y="+y); System.out.println("dimensiones :
w="+ancho+", h="+alto);
}
public void cambiarDimensiones(int dw, int dh){ ancho+=dw;
alto+=dh;
}
}

Objetos de la clase base


Como vemos en el código, el constructor de la clase base inicializa los cuatro miembros
dato. Llamamos al constructor creando un objeto de la clase Ventana

Ventana ventana=new Ventana(0, 0, 20, 30);

Desde el objeto ventana podemos llamar a las funciones miembro públicas

ventana.mostrar();
ventana.cambiarDimensiones(10, 10);
ventana.mostrar();

Ejemplo
public abstract class Figura {

protected int x;

protected int y;

public Figura(int x, int y) {

this.x=x;

this.y=y;

public abstract double area();

class Rectangulo extends Figura{


protected double ancho, alto;

public Rectangulo(int x, int y, double ancho, double alto){

super(x,y);

this.ancho=ancho;

this.alto=alto;

public double area(){

return ancho*alto;

En este ejemplo, se nota como la clase figura le da atributos a la clase rectángulo

Clases derivadas

Depende de las clases base, ya que algunos de sus métodos son también heredados, y
muchas veces, el compilador arrojara malos resultados, ya que al ser dependientes estas
clases, a veces podrán generar errores lógicos.

Ejemplo
// palabras clave_base2.cs

usando System;

clase pública BaseClass

numero int ;

Clase base pública ()

Console.WriteLine("en ClaseBase()");

BaseClass pública ( int i)

número = yo;

Console.WriteLine("en BaseClass(int i)");

público int GetNum ()

número de retorno ;

clase pública DerivedClass: BaseClass

{
// Este constructor llamará a BaseClass.BaseClass()

public DerivedClass () : base ()

// Este constructor llamará a BaseClass.BaseClass(int i)

public DerivedClass ( int i) : base (i)

vacío estático principal ()

ClaseDerivada md = nueva ClaseDerivada();

ClaseDerivada md1 = nueva ClaseDerivada(1);

Herencia simple

La herencia simple consiste en cuando una clase, hereda a una clase hijo, y a solo una le
hereda sus atributos, es igual al concepto general de herencia, con la limitante de solo poder
heredar de una clase padre a una clase hijo, y solo a una clase hijo

Un ejemplo de herencia simple en Java es la siguiente:

Public class animal{


Public String ojos;

Public String color;

Public int patas;

Public void patas(){

...

Public class perro extends animal{ /*la clase perro hereda atributos y metodos de la clase
animal*/

System.out.println(“Dame el color del animal”+ color);//Hereda la variable color de la clase


animal

Herencia múltiple

Con la herencia múltiple una subclase puede heredar propiedades de más de

una superclase.

La herencia múltiple por interfaces

La herencia múltiple en Java no existe, pero puede implementarse (en cierta medida)

mediante interfaces.

Herencia simple o única

Una clase hija hereda de una clase padre.


Herencia múltiple

Una clase hija hereda de dos o más clases padre.

Herencia multinivel

Una clase hija hereda de una clase padre, que a su vez es clase hija de otra clase padre.
Herencia jerárquica

Una clase padre hereda a dos o más clases hijas.

Ejemplos

Herencia simple

//MAIN.JAVA

PUBLIC CLASS MAIN {

PUBLIC STATIC VOID MAIN (STRING [ ] ARGS) {


PROFESOR PROFESOR1 = NEW PROFESOR ("PROFESOR", "MENDOZA
CUBA", 33);

//PROFESOR1.SETIDPROFESOR("PROFESOR123456789");

SYSTEM.OUT.PRINTLN(PROFESOR1.TOSTRING());

ALUMNO ALUMNO1 = NEW ALUMNO ("ALUMNO", "PARDO MANILA", 15);

ALUMNO1.SETIDALUMNO("ALUMNO123456789");

SYSTEM.OUT.PRINTLN(ALUMNO1.TOSTRING());

PRACTICANTE PRACTICANTE1 = NEW PRACTICANTE ("PRACTICANTE",


"TORRES NILO", 19);

PRACTICANTE1.SETIDPRACTICANTE("PRACTICANTE123456789");

SYSTEM.OUT.PRINTLN(PRACTICANTE1.TOSTRING());

}
Herencia multinivel

//PERSONA.JAVA

PUBLIC CLASS PERSONA {

//ATRIBUTOS

PRIVATE STRING NOMBRE;

PRIVATE STRING

APELLIDOS; PRIVATE INT

EDAD;

//CONSTRUCTOR

PUBLIC PERSONA (STRING NOMBRE, STRING APELLIDOS, INT EDAD)

{ THIS.NOMBRE = NOMBRE;

THIS.APELLIDOS =

APELLIDOS; THIS.EDAD =

EDAD;

}
PUBLIC STRING GETAPELLIDOS() { RETURN APELLIDOS; }

PUBLIC INT GETEDAD() { RETURN EDAD; }

Herencia jerárquica

//PROFESOR.JAVA

PUBLIC CLASS PROFESOR EXTENDS PERSONA {

//ATRIBUTOS PROPIOS DE LA

SUBCLASE PRIVATE STRING

IDPROFESOR;

//CONSTRUCTOR

PUBLIC PROFESOR (STRING NOMBRE, STRING APELLIDOS, INT EDAD) {

SUPER(NOMBRE, APELLIDOS, EDAD);

IDPROFESOR = "UNKNOWN";

}
//MÉTODOS PROPIOS DE LA SUBCLASE

PUBLIC VOID SETIDPROFESOR (STRING IDPROFESOR) { THIS.IDPROFESOR


= IDPROFESOR; }

PUBLIC STRING GETIDPROFESOR () { RETURN IDPROFESOR; }

PUBLIC STRING TOSTRING() {

RETURN "" + GETNOMBRE() + " " + GETAPELLIDOS() + " - " + GETEDAD()


+ " - " + GETIDPROFESOR();

//ALUMNO.JAVA

PUBLIC CLASS ALUMNO EXTENDS PERSONA {

//ATRIBUTOS PROPIOS DE LA

SUBCLASE. PRIVATE STRING

IDALUMNO;
PUBLIC ALUMNO (STRING NOMBRE, STRING APELLIDOS, INT EDAD) {

SUPER(NOMBRE, APELLIDOS, EDAD);

IDALUMNO = "UNKNOWN";

//MÉTODOS PROPIOS DE LA SUBCLASE

PUBLIC VOID SETIDALUMNO (STRING IDALUMNO) { THIS.IDALUMNO =


IDALUMNO; }

PUBLIC STRING GETIDALUMNO () { RETURN IDALUMNO; }

PUBLIC STRING TOSTRING() {

RETURN "" + GETNOMBRE() + " " + GETAPELLIDOS() + " - " + GETEDAD()


+ " - " + GETIDALUMNO();

//PRACTICANTE.JAVA
PUBLIC CLASS PRACTICANTE EXTENDS ALUMNO {

//ATRIBUTOS PROPIOS DE LA SUBCLASE.

PRIVATE STRING IDPRACTICANTE;

//CONSTRUCTOR

PUBLIC PRACTICANTE (STRING NOMBRE, STRING APELLIDOS, INT EDAD) {

SUPER(NOMBRE, APELLIDOS, EDAD);

IDPRACTICANTE = "UNKNOWN";

//MÉTODOS PROPIOS DE LA SUBCLASE

PUBLIC VOID SETIDPRACTICANTE (STRING IDPRACTICANTE) {


THIS.IDPRACTICANTE = IDPRACTICANTE; }

PUBLIC STRING GETIDPRACTICANTE () { RETURN IDPRACTICANTE; }

PUBLIC STRING TOSTRING() {

RETURN "" + GETNOMBRE() + " " + GETAPELLIDOS() + " - " + GETEDAD() +


" - " + GETIDPRACTICANTE();
}

El uso de la herencia nos permitir crear y programar códigos, son usados para las clases
prácticas de programación y fundamento, así como también la clase base y clase derivada
estás usan métodos, arreglos o gett o sett.

Las clases se encargan de que la estructura del código tenga coherencia y pueda cargar sin
errores.

Las Herencias tiene formas diferentes para estructurar un código ya sea con casos
múltiples, de una sola opción o de dos ya sea si o no.

Son de suma importancia para el uso de programación, fundamentos, contabilidad, también


son usados en carreras de mecatrónica.
https://www.cua.uam.mx/pdfs/revistas_electronicas/libros-electronicos/2016/2intro-
poo/programacion_web.pdf

https://learn.microsoft.com/es-es/dotnet/csharp/fundamentals/object-oriented/inheritance

https://palomaitor.wordpress.com/category/unidad-4/

http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/herencia/herencia.htm

https://blog.hubspot.es/website/que-es-herencia-java

También podría gustarte