Herencia y clases anidadas
Java
Publicado el 22 de Julio del 2017 por Rafael Angel (81 códigos)
3.555 visualizaciones desde el 22 de Julio del 2017
Ejemplificación del uso de clases anidadas, herencia, extends, implements
//Clases anidadas y abstractas.
//Autor Rafael Angel Montero Fernpandez.
//Fecha 14/7/2017.
public class Anidadas
{
public Anidadas()
{
}//Fin del cosntructor
public String getInformacion()
{
FiguraGeometrica fg = new FiguraGeometrica
(12 , 10, 14, 12);
return "Area del objeto " + fg.getArea() + "\nPerimetro del objeto: " + fg.getPerimetro()
+ "\nVolumen del objeto: " + fg.getVolumen();
}//Fin de getInformacion
//___________________________________________________________________________________
//Clases anidadas
abstract class Geometrica
{//Una clase abstracta tambien se puede usar como un origen de datos. Aclarando, un origen de variables en las cuales guardar datos y asi no tener que declararlas.
int vAltura, vBase;
int vLado,vAncho;
public Geometrica()
{
vAltura=0;
vBase=0;
vLado=0;
vAncho=0;
}//Fin del constructor
public abstract int fArea(int altura, int base);
}//Fin del class Geometrica
//--------------------------------------------------------------------------------------
class PerimetroArea extends Geometrica
{
public int fArea(int altura, int base)//metodo heredado de Area
{
vAltura = altura;
vBase = base;
return vAltura * vBase;
}//Fin de fArea
public int fPerimetro(int medida_de_un_lado)//Metodo propio de esta clase
{
vLado = medida_de_un_lado;
return vLado * 4;
}
public int fVolumen (int altura, int base, int ancho)
{
vBase = base;
vAltura = altura;
vAncho = ancho;
return vBase * vAltura * vAncho;
}//Fin de fVolumen
}//Fin del class PerimetroArea
//-----------------------------------------------------------------------------------
interface Getters
{
public void setBase(int nueva_base);
public int getBase();
public void setAltura(int nueva_altura);
public int getAltura();
public void setAncho(int nuevo_ancho);
public int getAncho();
public void setLado(int nuevo_lado);
public int getLado();
public int getArea();
public int getPerimetro();
public int getVolumen();
}//Fin de la interface Getters
//-----------------------------------------------------------------------------------
class FiguraGeometrica extends PerimetroArea implements Getters
{
//Constructor para cargar todo.
public FiguraGeometrica(int nueva_base, int nueva_altura, int nuevo_ancho, int nuevo_lado)
{//Cargando todas las propiedades.
setBase(nueva_base);
setAltura(nueva_altura);
setAncho(nuevo_ancho);
setLado(nuevo_lado);
}//Fin del cosntructor
//Implementaciones de la interface Getters
public int getVolumen()
{
return fVolumen (getAltura(), getBase(), getAncho());
}//Fin de getVolumen
public void setBase(int nueva_base)
{
vBase=nueva_base;
}//Fin de setBase
public int getBase(){ return vBase;}//Fin de getBase
public void setAltura(int nueva_altura)
{
vAltura = nueva_altura;
}//Fin de setAltura
public int getAltura(){return vAltura;}//Fin de getAltura
public void setAncho(int nuevo_ancho)
{
vAncho = nuevo_ancho;
}//Fin de setAncho
public int getAncho(){return vAncho;}//Fin de getAncho
public void setLado(int nuevo_lado)
{
vLado = nuevo_lado;
}//Fin de setLado
public int getLado(){ return vLado;}//Fin de getLado
public int getArea()
{
return fArea(getAltura(), getBase() );
}//Fin de getArea
public int getPerimetro()
{
return fPerimetro (getLado() );
}//Fin de getPerimetro
public boolean iguales(FiguraGeometrica objeto)
{
boolean vRespuesta=false;
if (objeto == null || getPerimetro() != objeto.getPerimetro() )
{
vRespuesta=false;
}//Fin del if
else
{
final FiguraGeometrica figura = (FiguraGeometrica) objeto;
vRespuesta = objeto.getPerimetro() == getPerimetro();
}//Fin del else
return vRespuesta;
}//Fin de iguales
//*****************************************
//implementaciones de la clase PerimetroArea.
@Override//Cuando se redefine un metodo entonces, se escribe @Override antes del metodo.
public int fArea(int altura, int base)//metodo heredado de Area
{
return altura * base;
}//Fin de fArea
@Override
public int fPerimetro(int medida_de_un_lado)//Metodo propio de esta clase
{
return medida_de_un_lado * 4;
}
@Override
public int fVolumen (int altura, int base, int ancho)
{
return altura * base * ancho;
}//Fin de fVolumen
//*******************************************
}//Fin de FiguraGeometrica
}//Fin del class Anidadas
Comentarios sobre la versión: 1.0 (0)
No hay comentarios