Sie sind auf Seite 1von 3

CLASES ABSTRACTAS E INTERFACES EN JAVA CLASES ABSTRACTAS

Una clase que declara la existencia de mtodos pero no la implementacin de dichos mtodos (o sea, estos mtodos no hacen nada, solo son declarados), se considera una clase abstracta. Una clase abstracta puede contener mtodos no abstractos pero al menos uno de los mtodos debe ser abstracto. Para declarar una clase o mtodo como abstractos, se utiliza la palabra reservada abstract. abstract class Dibujar { abstract void miMetodo(int var1, int var2); String otroMetodo() { //instrucciones del metodo } } Una clase abstracta no se puede instanciar (es decir no se pueden volver en objetos) pero si se puede heredar y las clases hijas sern las encargadas de agregar la funcionalidad a los mtodos abstractos. Ejemplo: Como ejemplo tomaremos dos figuras geomtricas, el Rectngulo y el Triangulo rectngulo, para el ejemplo slo consideraremos dos caractersticas similares: el ancho y el alto, por lo que podemos crear una super clase Figura geomtrica con estas dos caractersticas y sus mtodos correspondientes, adems del mtodos getArea() que devolver el rea de la Figura. Pero, se presenta un problema, el clculo del rea del Rectangulo es diferente al clculo del rea del Triangulo. Area del Rectangulo = ancho X alto Area del Triangulo = (ancho X alto)/2 Por lo tanto, el mtodo getArea() deber ser abstracto, por lo cual, la clase Figura tambin deber ser abstracta.
abstract class Figura { protected int ancho,alto; void setDatos(int x,int y) //mtodo no abstracto { ancho=x; alto=y; } void mostrarDatos() //mtodo no abstracto { System.out.println(ancho); System.out.println(alto); } abstract float getArea(); //mtodo abstracto }

class Rectangulo extends Figura{ float getArea() //implementacin (desarrollo del mtodo) { return (ancho*alto); } } class Triangulo extends Figura{ float getArea() //implementacin (desarrollo del mtodo) { return ((ancho*alto)/2); } } public class prueba { public static void main(String[] args) { Rectangulo r=new Rectangulo(); r.setDatos(4,3); System.out.println(r.getArea()); Triangulo t=new Triangulo(); t.setDatos(4,3); System.out.print(t.getArea()); } }

Tipo de dato Protected


Este tipo de datos es privado para todas aquellas clases que no son derivadas, pero pblico para una clase derivada de la clase en la que se ha definido la variable como protected.

INTERFACES
Una interface es una variante de una clase abstracta con la condicin de que todos sus mtodos deben ser abstractos. Si la interface va a tener atributos, stos deben llevar las palabras reservadas static final y con un valor inicial ya que funcionan como constantes por lo que, por convencin, su nombre va en maysculas.
interface Nomina { public static final String EMPRESA = "Patito, S. A."; public void detalleDeEmpleado(Nomina obj); }

Una clase implementa una o ms interfaces (separadas por comas) con la palabra reservada implements con el uso de interfaces se puede simular la herencia mltiple que Java no soporta
class Empleado implements Nomina { ... }

Ejemplo: En el siguiente ejemplo, tomaremos de ejemplo a los animales, se sabe que todos los animales hablan (literalmente), por ejemplo el perro ladra, el gato malla, etc. Entonces se puede crear una interfaz Animal con el mtodo hablar().

interface Animal { public void hablar(); }

Ahora crearemos una clase Perro que implemente la interfaz Animal, por lo que obligatoriamente tendremos que implementar el mtodo hablar().
public class Perro implements Animal{ public void hablar() { System.out.print("guauuu"); } }

Ahora crearemos una clase Gato que implemente la interfaz Animal, por lo que obligatoriamente tendremos que implementar el mtodo hablar().
public class Gato implements Animal{ public void hablar() { System.out.print("miauuu"); } } class prueba { public static void main(String[] args) { Perro p=new Perro(); p.hablar(); Gato g=new Gato(); g.hablar(); } }

Das könnte Ihnen auch gefallen