[JAVA] Comprenez la différence entre les classes abstraites et les interfaces!

Comprenez la différence entre les classes abstraites et les interfaces!

Je suis sûr que ceux qui l'utilisent l'oublient souvent lorsqu'ils essaient de l'utiliser. Cette fois, comprenons la différence entre les classes abstraites et les interfaces.

Classe abstraite ???

Premièrement, la classe abstraite commence par rien. Une classe abstraite est simplement une [classe inachevée]. → J'ai une [Méthode inachevée].

La classe abstraite est Seul ne joue pas le rôle de classe, Puisqu'il crée une nouvelle classe, il a une signification importante en tant que classe parent (Super Class) qui devient une classe de base.

J'ai préparé un exemple. La taille de la figure est un exemple à demander. Une classe abstraite appelée Shape définit uniquement la fonction abstraite de Finding the size of a figure. A partir de maintenant, la sous-classe définit comment l'implémenter.

abstract class Shape {         
   abstract void draw(double a, double b);
}
class Circle extends Shape {
   void draw(double r1, double r2) {
      System.out.println("Circle : " + (3.14 * r1 * r2));
}
class Rectangle extends Shape {
   void draw(double h, double v) {
      System.out.println("Rectangle  : " + (h * v));
}
class Triangle extends Shape {
   void draw(double a, double h) {
      System.out.println("Triangle  : " + (a * h / 2));
}
public class AbstractTest 
{
   public static void main(String args[]) {
      Circle c = new Circle();
      c.draw(5.0, 5.0);

      Rectangle r = new Rectangle();
      r.draw(5.0, 10.0); 

      Triangle t = new Triangle();
      t.draw(5.0, 10.0);  

      Shape s = new Circle();
      s.draw(5.0, 5.0);  
   }
}

interface???

Les interfaces sont des amis des classes abstraites. C'est une sorte de classe abstraite, mais c'est plus abstrait qu'une classe abstraite. Utilisez des outils pour utiliser l'interface dans la classe.

En outre, bien que cela soit gênant, il existe diverses restrictions sur l'interface. --Toutes les variables membres doivent être publiques static final. (Peut être omis)

TV.java


public interface TV{
   public int MAX_VOLUME = 100;
   public int MIN_VOLUME = 0;

   public void turnOn();
   public void turnOff();
   public void changeVolume(int volume);
   public void changeChannel(int channel);
}

J'ai créé TV.java. Vous pouvez définir des méthodes abstraites et des constantes.

LedTV.java


public class LedTV implements TV
{
    public void on(){
        System.out.println("TV ON");
    }
    public void off(){
        System.out.println("TV OFF");   
    }
    public void volume(int value){
        System.out.println(value + "volume Setting.");  
    }
    public void channel(int number){
        System.out.println(number + "channel Setting.");         
    }
}

Test.java


public class Test{
    public static void main(String args[]){
        TV tv = new LedTV();
        tv.on();
        tv.volume(50);
        tv.channel(6);
        tv.off();
    }
}

Si vous avez créé un LcdTV qui implémente une interface TV, Même si seule la nouvelle partie LedTV est remplacée par la nouvelle LcdTV, le programme peut fonctionner de la même manière.

Ce que les classes abstraites et les interfaces ont en commun

Différence entre classe abstraite et interface

interface Classe abstraite
Pour garantir le même comportement pour l'objet d'implémentation Pour utiliser et étendre la fonction
L'héritage multiple est possible L'héritage multiple n'est pas possible
Seules les méthodes abstraites sont possibles Méthode générale+Méthode abstraite possible

Recommended Posts

Comprenez la différence entre les classes abstraites et les interfaces!
[Java] Comprendre la différence entre List et Set
[iOS] Comprendre la différence entre le cadre et les limites
Différences entre les classes et les instances dans Ruby
[JAVA] Quelle est la différence entre interface et abstract? ?? ??
Différence entre interface et classe abstraite
[JAVA] Différence entre abstrait et interface
La différence entre la programmation qui utilise des classes Ruby et la programmation qui n'utilise pas
À propos de la différence entre irb et pry
[Détails] Maîtrisons les classes abstraites et les interfaces! !!
Facile à comprendre la différence entre la méthode d'instance Ruby et la méthode de classe.
[Rails / Active Record] À propos de la différence entre créer et créer!
Quelle est la différence entre SimpleDateFormat et DateTimeFormatter? ??
Différence entre vh et%
Comprendre la différence entre int et Integer et BigInteger en java et float et double
Différence entre i ++ et ++ i
[Ruby] J'ai réfléchi à la différence entre each_with_index et each.with_index
[Rails] J'ai étudié la différence entre les ressources et les ressources
Quelle est la différence entre System Spec et Feature Spec?
[Rails] Quelle est la différence entre la redirection et le rendu?
Comparez la différence entre dockerfile avant et après docker-slim
Classes et instances Java comprises dans la figure
Quelle est la différence entre ignorer et en attente? [RSpec]
[Swift] UITextField m'a appris la différence entre nil et ""
Différence entre produit et variante
Différence entre redirect_to et render
[Java] Différence entre == et égal
Différence entre redirect_to et render
Différence entre CUI et GUI
Différence entre les variables et les variables d'instance
Différence entre mockito-core et mockito-all
Différence entre classe et instance
Différence entre l'installation de bundle et de bundle
Différence entre ArrayList et LinkedList
Différence entre render et redirect_to
Différence entre List et ArrayList
Différence entre .bashrc et .bash_profile
Différence entre StringBuilder et StringBuffer
Différence entre render et redirect_to
Méthodes et classes abstraites Java
[Java] Remarque sur la différence entre le jugement d'équivalence et le jugement d'égalité lors de la comparaison de classes String
Comprenez en 3 minutes! Une explication très approximative de la différence entre session et cookie
[Rails] Quelle est la différence entre l'installation et la mise à jour du bundle?
Différence entre Java et JavaScript (comment trouver la moyenne)
Quelle est la différence entre une action et une méthode d'instance?
[Java] Vérifiez la différence entre orElse et orElseGet avec IntStream
Remplaçons la différence entre == (identité) et méthode equals (équivalence)
[Ruby] Différence entre obtenir et publier
Différence entre la méthode d'instance et la méthode de classe
Différence entre l'opérateur == et la méthode égale
[Terminal] Différence entre irb et pry