Heim  >  Artikel  >  Java  >  Wie man Abstraktion in Java versteht

Wie man Abstraktion in Java versteht

(*-*)浩
(*-*)浩Original
2019-05-21 15:02:493623Durchsuche

Wie man Abstraktion in Java versteht

Extrahieren und fassen Sie ihre gemeinsamen Aspekte, wesentlichen Attribute und Beziehungen aus bestimmten Dingen zusammen und verwerfen Sie einzelne, nicht wesentliche Aspekte, Attribute und Beziehungen. Diese Art von Denkprozess ist Abstraktion genannt.

Abstrakte Klasse:

Eine Klasse, die mit der neuen Methode nicht instanziiert werden kann, d. h. eine Klasse, die kein bestimmtes Instanzobjekt hat, kann dies Leiten Sie nur neue Unterklassen über abstrakte Klassen ab, und erstellen Sie dann Objekte in ihrer Unterklasse.

Abstrakte Methode ist eine mit abstrakten Methoden modifizierte Methode Die zurückgegebenen Datentypen, Methodennamen und erforderlichen Parameter haben keinen Methodenkörper, was bedeutet, dass die abstrakte Methode nur deklariert werden muss. Wenn es sich bei einer Methode um eine abstrakte Methode handelt, bedeutet dies, dass diese Methode durch die Methode der Unterklasse überschrieben werden muss , andernfalls ist die Methode der Unterklasse immer noch abstrakt.

Eigenschaften abstrakter Klassen:

A: Abstrakte Klassen und abstrakte Methoden müssen mit dem Schlüsselwort abstract geändert werden ;

B: Es dürfen keine abstrakten Methoden in abstrakten Klassen vorhanden sein, aber Klassen mit abstrakten Methoden müssen als abstrakte Klassen definiert werden.

C: Abstrakte Klassen können nicht direkt instanziiert werden Unterklassen (Unterklassen nach überschreibenden Methoden) werden auf polymorphe Weise instanziiert.

Abstrakte Klassen haben Konstruktoren für den Unterklassenzugriff Initialisierung der übergeordneten Klassendaten; Die Unterklasse muss eine abstrakte Klasse sein.
  • Um eine konkrete Klasse zu werden, müssen alle abstrakten Methoden neu geschrieben werden Eine abstrakte Klasse ist unten angegeben:
  • public class AbstractDemo {
        public static void main(String[] args) {
            //Tree t = new Tree();//抽象的子类不能实例化;Error!
            Grass g = new Grass();//非抽象类的子类实例化
            g.grow();
            System.out.println("-------------");
            Plant p = new Grass();//多态的方式
            p.grow();
        }
    }
    abstract class Plant{
        public abstract void grow();
    }
    
    /*
     * 1.子类是抽象类;
     */
    abstract class Tree extends Plant{
        Tree(){
            System.out.println("tree");
        }
    }
    
    /*
     * 2.子类不是抽象类,则必须重写所有抽象方法;
     */
    class Grass extends Plant{
        Grass(){
            System.out.println("grass");
        }
        public void grow(){
            System.out.println("grass growing");
        }
    }

    Eigenschaften von Mitgliedern abstrakter Klassen:

A: Mitgliedsvariablen

    können beide Variablen sein oder Konstanten;
  • B: Konstruktormethode

  • wird für die Initialisierung des Unterklassenzugriffs auf übergeordnete Klassendaten verwendet;
  • C: Mitgliedsmethode

  • kann entweder sein abstrakt oder Kann nicht abstrakt sein;

Abstrakte Klassenmitgliedsmethodeneigenschaften:

A: Abstrakte Methode zwingt Unterklassen, Dinge zu tun; >

B: Nicht-abstrakte Methode

Unterklassenvererbung zur Verbesserung der Code-Wiederverwendbarkeit;

Das Folgende ist ein Beispiel für ein Mitglied einer abstrakten Klasse:

public class AbstractMember {
    public static void main(String[] args){
        
        Phone p = new Vivo();    //这里是多态;(用来实例化抽象类)
        p.height = 1460;        //1600 -> 1460
        System.out.println(p.height);
        System.out.println(p.width);
        System.out.println("-----------");
        p.call();        //vivo call
        p.method();        //vivo method
        
        
        
    }
}

abstract class Phone{
    public int height = 1600;
    public final int width = 960;
    public Phone(){}
    public Phone(String name,int count){}
    /*成员方法*/
    public abstract void call();//抽象成员方法;
    public void method(){        //非抽象成员方法;
        System.out.println("phone method");
    }
    
}
//非抽象子类,重写抽象父类的抽象方法:
class Vivo extends Phone{
    
    public void call(){
        System.out.println("vivo call");
    }
    public void method(){
        System.out.println("vivo method");
    }
    
}

Verwandte Lernempfehlungen:

Java Basic Tutorial

Das obige ist der detaillierte Inhalt vonWie man Abstraktion in Java versteht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn