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