Plusieurs points clés auxquels vous devez prêter attention lors de l'utilisation de classes abstraites:
Une classe contenant une ou plusieurs méthodes abstraites doit être déclarée comme une classe abstraite.
La déclaration d'une classe en tant que classe abstraite ne contient pas nécessairement des méthodes abstraites.
On pense généralement que les méthodes spécifiques ne devraient pas être incluses dans les classes abstraites.
Les classes abstraites ne peuvent pas être instanciées, c'est-à-dire que les objets de cette classe ne peuvent pas être créés.
Exemple de code:
La copie de code est la suivante:
import java.util. *;
/ **
* Ce programme démontre des classes abstraites.
* @version 1.01 2004-02-21
* @author Cay Horstmann
* /
Personne de classe publique
{
public static void Main (String [] args)
{
Personne [] personnes = nouvelle personne [2];
// Remplissez le tableau des personnes avec des objets étudiants et employés
People [0] = nouvel employé ("Harry Hacker", 50000, 1989, 10, 1);
personnes [1] = nouvel étudiant ("Maria Morris", "informatique");
// Imprime les noms et les descriptions de tous les objets de personne
Pour (Person P: People)
System.out.println (p.getName () + "," + p.getDescription ());
}
}
Personne de classe abstraite
{
Personne publique (chaîne N)
{
name = n;
}
Public Résumé String getDescription ();
public String getName ()
{
nom de retour;
}
nom de chaîne privé;
}
L'employé de classe étend la personne
{
Employé public (String N, Double S, INN Year, INM MOIS, INT DAY)
{
super (n);
salaire = s;
GregorianCalendar Calendar = New GregorianCalendar (année, mois - 1, jour);
HIREDAY = Calendar.GetTime ();
}
public double getalary ()
{
Salaire de retour;
}
Date publique Gethireday ()
{
retour Hireday;
}
public String getDescription ()
{
retour string.format ("un employé avec un salaire de $%. 2f", salaire);
}
Public Void Raisalary (Double Bypercent)
{
double augmentation = salaire * bypercent / 100;
salaire + = augmentation;
}
Salaire double privé;
Date privée Hireday;
}
L'élève de classe étend la personne
{
/ **
* @param n le nom de l'élève
* @param m le major de l'étudiant
* /
Étudiant public (String N, String M)
{
// passer n au constructeur de superclass
super (n);
major = m;
}
public String getDescription ()
{
Renvoyez "un étudiant spécialisé en" + major;
}
Major à cordes privées;
}
Dans le bloc de code:
La copie de code est la suivante:
Pour (Person P: People)
System.out.println (p.getName () + "," + p.getDescription ());
Dans P.GetDescription (), la méthode qui fera référence à l'objet de sous-classe de la sous-classe spécifique.
GetDescription () dans la classe de personne ne peut pas être omis car le compilateur permet uniquement des méthodes d'appel déclaré dans la classe.