Herencia multiple
La herencia multiple, consiste en la utilizacion de las propiedades de una clase a varias clases mas, lo que significa que en esta propiedad una sola clase padre puede heredarle atributos, u objetos de esta a varias clases hijo sin ninguna limitacion entre ellas.
El unico problema de la herencia multiple, es que es manejable en varias plataformas para programar, pero en Java no existe el concepto de la herencia multiple, osease que Java no es capas de manejar algun metodo para poder heredar a mas de una clase hija.
A continuación presento un ejemplo de Herencia multiple en C++
//clase punto3
public class Punto3 {
private int x; // parte x de un par de coordenadas
private int y; // parte y de un par de coordenadas
// constructor sin argumentos
public Punto3()
{
// la llamada implícita al constructor de Object ocurre aquí
}
// constructor
public Punto3( int valorX, int valorY )
{
// la llamada implícita al constructor de Object ocurre aquí
x = valorX; // no hay necesidad de validación
y = valorY; // no hay necesidad de validación
}
// establecer x en el par de coordenadas
public void establecerX( int valorX )
{
x = valorX; // no hay necesidad de validación
}
// devolver x del par de coordenadas
public int obtenerX()
{
return x;
}
// establecer y en el par de coordenadas
public void establecerY( int valorY )
{
y = valorY; // no hay necesidad de validación
}
// devolver y del par de coordenadas
public int obtenerY()
{
return y;
}
// devolver la representación String del objeto Punto3
public String toString()
{
return "[" + obtenerX() + ", " + obtenerY() + "]";
}
} // fin de la clase Punto3
// clase circulo 4 que hereda de clase punto3
public class Circulo4 extends Punto3 {
private double radio; // El radio de Circulo4
// constructor sin argumentos
public Circulo4()
{
// La llamada implícita al constructor de Punto3 ocurre aquí
}
// constructor
public Circulo4( int valorX, int valorY, double valorRadio )
{
super( valorX, valorY ); // llamar explícitamente al constructor de Punto3
establecerRadio( valorRadio );
}
// establecer el radio
public void establecerRadio( double valorRadio )
{
radio = ( valorRadio < 0.0 ? 0.0 : valorRadio );
}
// devolver el radio
public double obtenerRadio()
{
return radio;
}
// calcular y devolver el diámetro
public double obtenerDiametro()
{
return 2 * obtenerRadio();
}
// calcular y devolver la circunferencia
public double obtenerCircunferencia()
{
return Math.PI * obtenerDiametro();
}
// calcular y devolver el área
public double obtenerArea()
{
return Math.PI * obtenerRadio() * obtenerRadio();
}
// devolver la representación String del objeto Circulo4
public String toString()
{
return "Centro = " + super.toString() + "; Radio = " + obtenerRadio();
}
} // fin de la clase Circulo4
// Prueba de la clase Cilindro.
import java.text.DecimalFormat;
import javax.swing.JOptionPane;
public class PruebaCilindro {
public static void main( String[] args )
{
// crear el objeto Cilindro
Cilindro cilindro = new Cilindro( 12, 23, 2.5, 5.7 );
// obtener las coordenadas x-y, radio y altura iniciales del Cilindro
String salida = "La coordenada X es " + cilindro.obtenerX() +
"\nLa coordenada Y es " + cilindro.obtenerY() + "\nEl radio es " +
cilindro.obtenerRadio() + "\nLa altura es " + cilindro.obtenerAltura();
cilindro.establecerX( 35 ); // establecer la nueva coordenada x
cilindro.establecerY( 20 ); // establecer la nueva coordenada y
cilindro.establecerRadio( 4.25 ); // establecer el nuevo radio
cilindro.establecerAltura( 10.75 ); // establecer la nueva altura
// obtener la representación String del nuevo valor de cilindro
salida +=
"\n\nLa nueva ubicación, radio y altura del cilindro son\n" +
cilindro.toString();
// dar formato a los valores de punto flotante con 2 dígitos de precisión
DecimalFormat dosDigitos = new DecimalFormat( "0.00" );
// obtener el diámetro del Cilindro
salida += "\n\nEl diámetro es " +
dosDigitos.format( cilindro.obtenerDiametro() );
// obtener la circunferencia del Cilindro
salida += "\nLa circunferencia es " +
dosDigitos.format( cilindro.obtenerCircunferencia() );
// obtener el área del Cilindro
salida += "\nEl área es " + dosDigitos.format( cilindro.obtenerArea() );
// obtener el volumen del Cilindro
salida += "\nEl volumen es " + dosDigitos.format( cilindro.obtenerVolumen() );
JOptionPane.showMessageDialog( null, salida ); // mostrar resultados
System.exit( 0 );
} // fin de main
} // fin de la clase PruebaCilindro
// La declaración de la clase Punto representa un par de coordenadas x-y.
public class Punto {
private int x; // parte x del par de coordenadas
private int y; // parte y del par de coordenadas
// constructor sin argumentos
public Punto()
{
// la llamada implícita al constructor de Object ocurre aquí
System.out.println( "Constructor sin argumentos de Punto: " + this );
}
// constructor
public Punto( int valorX, int valorY )
{
// la llamada implícita al constructor de Object ocurre aquí
x = valorX; // no hay necesidad de validación
y = valorY; // no hay necesidad de validación
System.out.println( "Constructor de Punto: " + this );
}
// finalizador
protected void finalize()
{
System.out.println( "Finalizador de Punto: " + this );
}
// establecer x en el par de coordenadas
public void establecerX( int valorX )
{
x = valorX; // no hay necesidad de validación
}
// devolver x del par de coordenadas
public int obtenerX()
{
return x;
}
// establecer y en el par de coordenadas
public void establecerY( int valorY )
{
y = valorY; // no hay necesidad de validación
}
// devolver y del par de coordenadas
public int obtenerY()
{
return y;
}
// devolver la representación String del objeto Punto
public String toString()
{
return "[" + obtenerX() + ", " + obtenerY() + "]";
}
} // fin de la clase Punto
// Declaración de la clase Circulo.
public class Circulo extends Punto {
private double radio; // el radio del Circulo
// constructor sin argumentos
public Circulo()
{
// la llamada implícita al constructor de Punto ocurre aquí
System.out.println( "Constructor sin argumentos de Circulo: " + this );
}
// constructor
public Circulo( int valorX, int valorY, double valorRadio )
{
super( valorX, valorY ); // llamar al constructor de Punto
establecerRadio( valorRadio );
System.out.println( "Constructor de Circulo: " + this );
}
// finalizador
protected void finalize()
{
System.out.println( "Finalizador de Circulo: " + this );
super.finalize(); // llamar al método finalize de la superclase
}
// establecer el radio
public void establecerRadio( double valorRadio )
{
radio = ( valorRadio < 0.0 ? 0.0 : valorRadio );
}
// devolver el radio
public double obtenerRadio()
{
return radio;
}
// calcular y devolver el diámetro
public double obtenerDiametro()
{
return 2 * obtenerRadio();
}
// calcular y devolver la circunferencia
public double obtenerCircunferencia()
{
return Math.PI * obtenerDiametro();
}
// calcular y devolver el área
public double obtenerArea()
{
return Math.PI * obtenerRadio() * obtenerRadio();
}
// devolver la representación String del objeto Circulo
public String toString()
{
return "Centro = " + super.toString() + "; Radio = " + obtenerRadio();
}
} // fin de la clase Circulo
No hay comentarios:
Publicar un comentario