Heim  >  Artikel  >  Java  >  Was ist eine abstrakte Klasse in Java?

Was ist eine abstrakte Klasse in Java?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-11-12 17:04:065641Durchsuche

Was ist eine abstrakte Klasse in Java?

1. Was ist eine abstrakte Klasse?

Durch Zusammenfassung modifizierte Methoden werden als abstrakte Methoden bezeichnet abstract Es wird eine abstrakte Klasse genannt. Eine abstrakte Klasse kann nicht instanziiert werden, da es sich nicht um eine konkrete Klasse handelt oder weil eine solche Klasse nicht vollständig genug ist, um direkt mit dem Schlüsselwort new ihren Konstruktor aufzurufen und ein Objekt dieser Klasse zu generieren. Wir können abstract verwenden, um eine abstrakte Klasse und eine abstrakte Methode zu definieren. Der Beispielcode lautet wie folgt:

abstract class 类名
{
abstract int 方法名(int x,int y);
}

Abstrakte Methoden haben keinen Methodenkörper. Es ist zu beachten, dass abstrakte Klassen sowohl abstrakte als auch gewöhnliche Methoden haben können. Beachten Sie, dass abstrakte Methoden keine Methodenkörper haben (d. h. nach den Methoden stehen keine geschweiften Klammern). Alle Entitätsunterklassen, die diese abstrakte Klasse erben, müssen diese abstrakte Methode implementieren.

Fassen wir die Eigenschaften abstrakter Klassen zusammen:

(1) Abstrakte Klassen können nicht instanziiert werden;

(2) Konstruktoren und statische Methoden können nicht abstrakt sein; 🎜>(3) Abstrakte Methoden von übergeordneten Klassen werden häufig in Unterklassen implementiert.

(4) Abstrakte Klassen können Objektreferenzen haben, die auf Unterklassenobjekte verweisen.

2. Beispiele für abstrakte Klassen

Schauen wir uns zunächst die tatsächlichen Beispiele an, die vervollständigt werden sollen:

1 Definieren Sie die abstrakte Klasse Employee;

(a) Geschützte Felder: Grundattribute wie Name, Geschlecht, Alter usw.

(b) Definieren Sie die abstrakte Methodenfunktion getsalary(), um den Vorgang des Einziehens von Löhnen darzustellen.

(c) Definieren Sie die Ausgabe der gewöhnlichen Funktion whoami(): I am + name

(d) Ein Konstruktor mit (Name, Geschlecht)-Parametern.

Definieren Sie einen von Mitarbeitern abgeleiteten Manager der Klasse

(a) Zusätzlich zu grundlegenden Attributen wie Mitarbeitern gibt es auch private Attribute auf Post-Ebene.

(b) Der Manager erhält ein Gehalt von 7.000 Yuan, druckt das Gehalt aus und gibt es aus.

(c) Schreiben Sie whoami() der übergeordneten Klasse neu, rufen Sie die whoami()-Methode der übergeordneten Klasse auf und geben Sie dann Folgendes aus: Ich bin ein Manager.

Definieren Sie eine Buchhaltungsklasse Buchhaltung, abgeleitet von der Mitarbeiterklasse

(a) Zusätzlich zu den Grundattributen wie Mitarbeitern gibt es auch ein privates Buchhaltungsbewertungsattribut.

(b) Der Buchhalter erhält ein Gehalt von 3.000 Yuan, druckt das Gehalt aus und gibt es aus.

(c) Schreiben Sie whoami() der übergeordneten Klasse neu, rufen Sie die whoami()-Methode der übergeordneten Klasse auf und geben Sie dann Folgendes aus: Ich bin Buchhalter.

/**
 * 定义类员工Employee,
 */
public abstract class Employee {
    protected String name;
    protected boolean gender;
    protected int age;
    public Employee(String name,boolean gender){
        this.name=name;
        this.gender=gender;
    }
    /**
    * 表示领工资的操作
    */
    public abstract void getsalary();
    public void whoami(){
        System.out.println("我是"+name);
    }
}

Wir erstellen eine neue Managerklasse Manager und erben die Employee-Klasse. Zu diesem Zeitpunkt fordert Eclipse uns auf, die abstrakte Methode getsalary zu überschreiben. Der Beispielcode lautet wie folgt:

/**
 * 经理类
 */
public class Manager extends Employee{
    private String gree;
    
    public Manager(String name,boolean gender){
        super(name,gender);
    }
    //重写父类的抽象方法
    public void getsalary(){
        System.out.println("经理领7000元工资");
    }
    public void whoami(){
        super.whoami();//显示调用父类的方法
        System.out.println("我是经理");
    }
}

Als nächstes folgt die Buchhaltungsklasse. Es ist fast dasselbe wie die Managerklasse oben.

/**
 * 会计
 */
public class Accounting extends Employee {
    private int rating;
    public Accounting(String name, boolean gender) {
        super(name, gender);
    }
    @Override
    public void getsalary() {
        System.out.println("会计发3000工资");
    }
    public void whoami() {
        super.whoami();// 显示调用父类的方法
        System.out.println("我是会计");
    }
}

php Chinesische Website, eine große Anzahl kostenloser

Java-Einführungs-Tutorials

, willkommen zum Online-Lernen!

Das obige ist der detaillierte Inhalt vonWas ist eine abstrakte Klasse in Java?. 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
Vorheriger Artikel:Was ist Mapping in Java?Nächster Artikel:Was ist Mapping in Java?