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:
- Modificadores : una clase puede ser pública o tener acceso predeterminado (consulte esto para obtener más detalles).
- Nombre de la clase: El nombre debe comenzar con una letra inicial (en mayúscula por convención).
- 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.
- 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.
- 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()); } }
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); } }
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