Maison  >  Article  >  Java  >  Qu'est-ce qu'une classe abstraite en Java

Qu'est-ce qu'une classe abstraite en Java

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼original
2019-11-12 17:04:065575parcourir

Qu'est-ce qu'une classe abstraite en Java

1. Qu'est-ce qu'une classe abstraite

Les méthodes modifiées par abstract sont appelées méthodes abstraites modifiées par ; abstract C'est ce qu'on appelle une classe abstraite. Une classe abstraite ne peut pas être instanciée car ce n'est pas une classe concrète, ou une telle classe n'est pas suffisamment complète pour utiliser directement le mot-clé new pour appeler son constructeur afin de générer un objet de cette classe. Nous pouvons utiliser abstract pour définir une classe abstraite et une méthode abstraite. L'exemple de code est le suivant :

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

Les méthodes abstraites n'ont pas de corps de méthode. Il convient de noter que les classes abstraites peuvent avoir à la fois des méthodes abstraites et des méthodes ordinaires. Notez que les méthodes abstraites n'ont pas de corps de méthode (c'est-à-dire qu'il n'y a pas d'accolades après les méthodes). Toutes les sous-classes d'entités qui héritent de cette classe abstraite doivent implémenter cette méthode abstraite.

Résumons les caractéristiques des classes abstraites :

(1) Les classes abstraites ne peuvent pas être instanciées

(2) Les constructeurs et les méthodes statiques ne peuvent pas être abstraits ; 🎜>(3) Les méthodes abstraites des classes parents sont souvent implémentées dans les sous-classes

(4) Les classes abstraites peuvent avoir des références d'objet pointant vers des objets de sous-classe ;

2. Exemples de classes abstraites

Voyons d'abord les exemples réels à compléter :

1. ;

(a) Champs protégés : attributs de base tels que le nom, le sexe, l'âge, etc.

(b) Définissez la fonction de méthode abstraite getsalary() pour représenter l'opération de collecte des salaires.

(c) Définir la sortie de la fonction ordinaire whoami() : I am + name

(d) Un constructeur avec des paramètres (nom, sexe).

Définir une classe de manager Manager dérivée des employés ;

(a) En plus des attributs de base tels que les employés, il existe également des attributs privés de niveau post-gree.

(b) Le manager reçoit un salaire de 7 000 yuans, imprime et édite le salaire.

(c) Réécrivez le whoami() de la classe parent, appelez la méthode whoami() de la classe parent, puis affichez : Je suis un manager.

Définir une classe comptable Comptabilité, dérivée de la classe employé

(a) En plus des attributs de base tels que les employés, il existe également un attribut privé de notation comptable ;

(b) Le comptable reçoit un salaire de 3 000 yuans, imprime et édite le salaire.

(c) Réécrivez le whoami() de la classe parent, appelez la méthode whoami() de la classe parent, puis affichez : Je suis comptable.

/**
 * 定义类员工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);
    }
}

Nous créons une nouvelle classe manager Manager et héritons de la classe Employee. À ce moment, Eclipse nous demande de remplacer la méthode abstraite getsalary. L'exemple de code est le suivant :

/**
 * 经理类
 */
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("我是经理");
    }
}

Vient ensuite la classe de comptabilité. C’est presque la même chose que la classe manager ci-dessus.

/**
 * 会计
 */
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("我是会计");
    }
}

site Web chinois php, un grand nombre de

tutoriels d'introduction à Java

gratuits, bienvenue pour apprendre en ligne !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn