[JAVA] Verstehe den Unterschied zwischen abstrakten Klassen und Schnittstellen!

Verstehe den Unterschied zwischen abstrakten Klassen und Schnittstellen!

Ich bin sicher, dass diejenigen, die es benutzen, es oft vergessen, wenn sie versuchen, es zu benutzen. Lassen Sie uns diesmal den Unterschied zwischen abstrakten Klassen und Schnittstellen verstehen.

Abstrakte Klasse ???

Erstens beginnt die abstrakte Klasse mit nichts. Eine abstrakte Klasse ist einfach eine [unvollendete Klasse]. → Ich habe eine [unvollendete Methode].

Die abstrakte Klasse ist Alleine spielt nicht die Rolle der Klasse, Da eine neue Klasse erstellt wird, hat sie eine wichtige Bedeutung als übergeordnete Klasse (Superklasse), die zu einer Basisklasse wird.

Ich habe ein Beispiel vorbereitet. Die Größe der Figur ist ein Beispiel, nach dem man fragen sollte. Eine abstrakte Klasse namens Shape definiert nur die abstrakte Funktion zum Ermitteln der Größe einer Figur. Von nun an definiert die Unterklasse, wie sie implementiert werden soll.

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);  
   }
}

Schnittstelle???

Schnittstellen sind Freunde abstrakter Klassen. Es ist eine Art abstrakte Klasse, aber abstrakter als eine abstrakte Klasse. Verwenden Sie Implementierungen, um die Schnittstelle in der Klasse zu verwenden.

Auch wenn es problematisch ist, gibt es verschiedene Einschränkungen für die Schnittstelle.

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);
}

Ich habe TV.java gemacht. Sie können abstrakte Methoden und Konstanten definieren.

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();
    }
}

Wenn Sie ein LcdTV erstellt haben, das eine TV-Schnittstelle implementiert, Selbst wenn nur der neue LedTV-Teil in neuen LcdTV geändert wird, kann das Programm auf die gleiche Weise arbeiten.

Was abstrakte Klassen und Schnittstellen gemeinsam haben

--Abstraktklassen und Schnittstellen haben nur Deklarationen und keinen Implementierungsinhalt.

Unterschied zwischen abstrakter Klasse und Schnittstelle

Schnittstelle Abstrakte Klasse
Um das gleiche Verhalten für das Implementierungsobjekt zu gewährleisten Funktion verwenden und erweitern
Mehrfachvererbung ist möglich Mehrfachvererbung ist nicht möglich
Es sind nur abstrakte Methoden möglich Allgemeine Methode+Abstrakte Methode möglich

Recommended Posts

Verstehe den Unterschied zwischen abstrakten Klassen und Schnittstellen!
[Java] Verstehe den Unterschied zwischen List und Set
[iOS] Verstehe den Unterschied zwischen Frame und Grenzen
Unterschiede zwischen Klassen und Instanzen in Ruby
[JAVA] Was ist der Unterschied zwischen Schnittstelle und Zusammenfassung? ?? ??
Unterschied zwischen Schnittstelle und abstrakter Klasse
[JAVA] Unterschied zwischen Abstract und Interface
Der Unterschied zwischen der Programmierung mit Ruby-Klassen und der Programmierung ohne Ruby-Klassen
Über den Unterschied zwischen irb und pry
[Details] Lassen Sie uns abstrakte Klassen und Schnittstellen beherrschen! !!
Der Unterschied zwischen der Ruby-Instanzmethode und der Klassenmethode ist leicht zu verstehen.
[Rails / Active Record] Über den Unterschied zwischen create und create!
Was ist der Unterschied zwischen SimpleDateFormat und DateTimeFormatter? ??
Unterschied zwischen vh und%
Verstehen Sie den Unterschied zwischen int und Integer und BigInteger in Java und float und double
Unterschied zwischen i ++ und ++ i
[Ruby] Ich habe über den Unterschied zwischen each_with_index und each.with_index nachgedacht
[Rails] Ich habe den Unterschied zwischen Ressourcen und Ressourcen untersucht
Was ist der Unterschied zwischen Systemspezifikation und Funktionsspezifikation?
[Rails] Was ist der Unterschied zwischen Redirect und Rendering?
Vergleichen Sie den Unterschied zwischen Docker-Datei vor und nach Docker-Slim
In der Abbildung verstandene Java-Klassen und -Instanzen
Was ist der Unterschied zwischen Überspringen und Ausstehend? [RSpec]
[Swift] UITextField hat mir den Unterschied zwischen Null und "" beigebracht.
Unterschied zwischen Produkt und Variante
Unterschied zwischen redirect_to und render
[Java] Unterschied zwischen == und gleich
Unterschied zwischen redirect_to und render
Unterschied zwischen CUI und GUI
Unterschied zwischen Variablen und Instanzvariablen
Unterschied zwischen Mockito-Core und Mockito-All
Unterschied zwischen Klasse und Instanz
Unterschied zwischen Bundle und Bundle-Installation
Unterschied zwischen ArrayList und LinkedList
Unterschied zwischen render und redirect_to
Unterschied zwischen List und ArrayList
Unterschied zwischen .bashrc und .bash_profile
Unterschied zwischen StringBuilder und StringBuffer
Unterschied zwischen render und redirect_to
Java abstrakte Methoden und Klassen
[Java] Hinweis zum Unterschied zwischen Äquivalenzbeurteilung und Gleichheitsbeurteilung beim Vergleich von String-Klassen
Verstehe in 3 Minuten! Eine sehr grobe Erklärung des Unterschieds zwischen Sitzung und Cookie
[Rails] Was ist der Unterschied zwischen Bundle-Installation und Bundle-Update?
Unterschied zwischen Java und JavaScript (wie man den Durchschnitt findet)
Was ist der Unterschied zwischen einer Aktion und einer Instanzmethode?
[Java] Überprüfen Sie den Unterschied zwischen orElse und orElseGet mit IntStream
Überschreiben wir den Unterschied zwischen == (Identität) und der Methode equals (Äquivalenz).
[Ruby] Unterschied zwischen get und post
Unterschied zwischen Instanzmethode und Klassenmethode
Unterschied zwischen == Operator und Methode gleich
[Terminal] Unterschied zwischen irb und pry