Diferencias entre interfaz y clase en Java

Este artículo destaca las diferencias entre una clase y una interfaz en Java. Parecen sintácticamente similares, ambos contienen métodos y variables, pero son diferentes en muchos aspectos.
Clase :
una clase es un plano o prototipo definido por el usuario a partir del cual se crean objetos. Representa el conjunto de propiedades o métodos que son comunes a todos los objetos de un tipo. En general, las declaraciones de clase pueden incluir estos componentes, en orden: 
 

  1. Modificadores  : una clase puede ser pública o tener acceso predeterminado (consulte esto para obtener más detalles).
  2. Nombre de la clase:  El nombre debe comenzar con una letra inicial (en mayúscula por convención).
  3. Superclase (si existe): el nombre del padre de la clase (superclase), si existe, precedido por la palabra clave extends. Una clase solo puede extender (subclase) un padre.
  4. Interfaces (si las hay): una lista separada por comas de las interfaces implementadas por la clase, si las hay, precedida por la palabra clave implements. Una clase puede implementar más de una interfaz.
  5. Cuerpo: el cuerpo de la clase rodeado de llaves, { }.

Los constructores se utilizan para inicializar nuevos objetos. Los campos son variables que proporcionan el estado de la clase y sus objetos, y los métodos se utilizan para implementar el comportamiento de la clase y sus objetos.
Ejemplo: 
 

Java

// Java program to demonstrate Class
 
// Class Declaration
public class Dog {
 
    // Instance Variables
    String name;
    String breed;
    int age;
    String color;
 
    // Constructor Declaration of Class
    public Dog(String name, String breed,
               int age, String color)
    {
        this.name = name;
        this.breed = breed;
        this.age = age;
        this.color = color;
    }
 
    // method 1
    public String getName()
    {
        return name;
    }
 
    // method 2
    public String getBreed()
    {
        return breed;
    }
 
    // method 3
    public int getAge()
    {
        return age;
    }
 
    // method 4
    public String getColor()
    {
        return color;
    }
 
    @Override
    public String toString()
    {
        return ("Hi my name is "
                + this.getName()
                + ".\nMy breed, age and color are "
                + this.getBreed() + ", "
                + this.getAge() + ", "
                + this.getColor());
    }
 
    public static void main(String[] args)
    {
        Dog tuffy = new Dog("tuffy", "papillon",
                            5, "white");
        System.out.println(tuffy.toString());
    }
}
Producción: 

Hi my name is tuffy.
My breed, age and color are papillon, 5, white

 

Interfaz : 
como una clase, una interfaz puede tener métodos y variables, pero los métodos declarados en la interfaz son abstractos por defecto (solo la firma del método, sin cuerpo).   
 

  • Las interfaces especifican qué debe hacer una clase y no cómo. Es el modelo de la clase.
  • Una interfaz se trata de capacidades, como que un jugador puede ser una interfaz y cualquier clase que implemente el jugador debe poder (o debe implementar) mover(). Entonces especifica un conjunto de métodos que la clase tiene que implementar.
  • Si una clase implementa una interfaz y no proporciona cuerpos de método para todas las funciones especificadas en la interfaz, entonces la clase debe declararse abstracta.
  • Un ejemplo de biblioteca Java es Comparator Interface . Si una clase implementa esta interfaz, entonces se puede usar para ordenar una colección.

Sintaxis: 
 

interface <interface_name> {
    
    // declare constant fields
    // declare methods that abstract 
    // by default.
}

Ejemplo: 
 

Java

// Java program to demonstrate
// working of interface.
 
import java.io.*;
 
// A simple interface
interface in1 {
 
    // public, static and final
    final int a = 10;
 
    // public and abstract
    void display();
}
 
// A class that implements the interface.
class testClass implements in1 {
 
    // Implementing the capabilities of
    // interface.
    public void display()
    {
        System.out.println("Geek");
    }
 
    // Driver Code
    public static void main(String[] args)
    {
        testClass t = new testClass();
        t.display();
        System.out.println(a);
    }
}
Producción: 

Geek
10

 

Diferencias entre una Clase y una Interfaz:

Clase Interfaz
La palabra clave utilizada para crear una clase es «clase». La palabra clave utilizada para crear una interfaz es «interfaz»
Se puede instanciar una clase, es decir, se pueden crear objetos de una clase. No se puede instanciar una interfaz, es decir, no se pueden crear objetos.
Las clases no admiten la herencia múltiple. La interfaz admite la herencia múltiple.
Se puede heredar de otra clase. No puede heredar una clase.
Puede ser heredado por otra clase usando la palabra clave ‘extiende’. Puede ser heredado por una clase usando la palabra clave ‘implementos’ y puede ser heredado por una interfaz usando la palabra clave ‘extiende’.
Puede contener constructores. No puede contener constructores.
No puede contener métodos abstractos. Solo contiene métodos abstractos.
Las variables y métodos en una clase se pueden declarar utilizando cualquier especificador de acceso (público, privado, predeterminado, protegido) Todas las variables y métodos en una interfaz se declaran como públicos.
Las variables en una clase pueden ser estáticas, finales o ninguna. Todas las variables son estáticas y finales.

Publicación traducida automáticamente

Artículo escrito por deepthisenthil y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *