Vous êtes sur la page 1sur 8

05.

Herencia y clases abstractas

Profesor: Carlos Díaz www.elprofediazjava.blogspot.pe


La clase Paralelepipedo hereda la clase Rectangulo.
Rectangulo se denomina superclase y Paralelepipedo es la subclase o clase derivada.

class Rectangulo{
protected double x;//protected, se comporta como privada para el exterior
protected double y;//pero publica para las clases derivadas.
public void getLados(){
System.out.println("x="+x);
System.out.println("y="+y);
}
Rectangulo (double x,double y){
this.x=x;
this.y=y;
}
public double area(){
return x*y;
}
}
class Paralelepipedo extends Rectangulo{//Paralelepipedo rectangular
private double z;
public void getLados(){
super.getLados();
System.out.println("z="+z);
}
Paralelepipedo (double x,double y,double z){
super(x,y);//Llama al constructor de la superclase
this.z=z;
}
public double volumen(){
return area()*z;
}
public void duplicar(){
x=2*x;
y=2*y;
z=2*z;
}
}
public class ejercicio {
public static void main(String[] args) {
Paralelepipedo ladrillo=new Paralelepipedo(3,4,5);
ladrillo.getLados();
System.out.println("Volumen: "+ladrillo.volumen());
ladrillo.duplicar();
ladrillo.getLados();
System.out.println("Volumen: "+ladrillo.volumen());
System.out.println("Area base: "+ladrillo.area());
}
}
En el programa anterior, cree una clase Columnas derivada de la clase Paralelepipedo.
Añada y modifique el código:

class Columnas extends Paralelepipedo{//Define dos columnas | |
private double x;
private double y;
private double z;
Columnas (double x1,double y1,double z1,double x2,double y2,double z2){
super(x1,y1,z1);
x=x2;
y=y2;
z=z2;
}
public void getLados(){
super.getLados();
System.out.println("x2="+x);
System.out.println("y2="+y);;
System.out.println("z2="+z);
}
public double volumen(){
return super.volumen()+x*y*z;
}
}
public class ejercicio {
public static void main(String[] args) {
Columnas soporte=new Columnas(3,4,5,2,6,7);
soporte.getLados();
System.out.println("Volumen: "+soporte.volumen());
soporte.duplicar();
soporte.getLados();
System.out.println("Volumen: "+soporte.volumen());
System.out.println("Area base: "+soporte.area());
}
}
Se utiliza para crear la estructura de una superclase. No se puede crear objetos de una clase abstracta.
abstract class Figura{
double dim1;
double dim2;
Figura (double a, double b) {
dim1 = a;
dim2 = b;
}
abstract double area(); //área es ahora un método abstracto
}
class Rectangulo extends Figura {
Rectangulo (double a, double b) {
super (a, b);
}
double area() {// se sobrescribe área para un rectángulo
System.out.println ("Dentro del método área par un objeto rectángulo.");
return dim1 * dim2;
}
}
class Triangulo extends Figura {
Triangulo (double a, double b) {
super (a, b);
}
double area() {//se sobrescribe área para un triángulo
System.out.println ("Dentro del método área par un objeto triángulo.");
return dim1 * dim2 / 2;
}
}
class ejemplo {
public static void main(String[] args) {
Rectangulo r = new Rectangulo (9, 5);
Triangulo t = new Triangulo (10, 8);
System.out.println ("El área es " + r.area());
System.out.println ("El área es " + t.area());
Figura figref; //esto es correcto, no se crea ningún objeto
figref = r;
System.out.println ("El área es " + figref.area());
figref = t;
System.out.println ("El área es " + figref.area());
}
}
*Crea una clase Punto2D
x,y, metodo rotarVector(teta)
Gira un angulo teta, metodo nuevoPunto(nx,ny)
Teta se ingresa sexagesimal en Main

*Crea la clase derivada Segmento


x1,y1,x2,y2, metodo rotarvector
Gira un angulo teta, nx2,ny2, metodo
nuevoPunto(nx2,ny2)

Vous aimerez peut-être aussi