Programmation Java: la création d'une sous-classe

Lorsque vous écrivez un programme orienté objet en Java, vous commencez par une réflexion sur les données. Vous avez écrit sur les comptes. Alors, quel est un compte? Vous code pour gérer les clics de bouton écriture. Alors, quel est un bouton? Vous écrivez un programme pour envoyer des chèques de paie des employés. Qu'est-ce qu'un salarié?

Dans cet exemple, un employé est quelqu'un avec un nom et un titre d'emploi. Bien sûr, les employés ont d'autres caractéristiques, mais pour l'instant tenir à l'essentiel. Le code dans cette liste définit ce que cela signifie d'être un employé.

static import classe java.lang.System.out public Employé {private String nom setName-private void cordes jobTitle-publique (String nameIn) {name = nameIn-} public String getName () {return Nom} public void setJobTitle (String jobTitleIn) {jobTitle = jobTitleIn-} public String getJobTitle () {return jobTitle-} public void cutCheck (Double amountPaid) {out.printf («Payez à l'ordre de% s", le nom) -out.printf ("(% s) *** $ ", jobTitle) -out.printf ("% ,. 2f n ", amountPaid) -}}

Dans la liste, une Employé classe est définie. Vous pouvez utiliser ce que vous définissez ici et étendre la définition de créer de nouvelles classes, plus spécialisés. Donc, dans cette annonce suivante, vous définissez une nouvelle classe - un FullTimeEmployee classe.

FullTimeEmployee public class étend employés {double double setWeeklySalary vide benefitDeduction public-privé weeklySalary privé (Double weeklySalaryIn) {weeklySalary = weeklySalaryIn-} public à double getWeeklySalary () {return weeklySalary-} public void setBenefitDeduction (Double benefitDedIn) {} benefitDeduction = benefitDedIn- à double getBenefitDeduction publique () {return} benefitDeduction- à double findPaymentAmount publique () {return weeklySalary - benefitDeduction-}}



En regardant la liste, vous pouvez voir que chaque instance de la FullTimeEmployee classe a deux champs: weeklySalary et benefitDeduction. Mais ces sont les seuls champs que chaque FullTimeEmployee exemple, a? Non, ils ne sont pas.

La première ligne dit que le FullTimeEmployee classe étend la existante Employé classe. Cela signifie que, en plus d'avoir un weeklySalary et un benefitDeduction, chaque FullTimeEmployee instance a aussi deux autres domaines: nom et profession. Ces deux champs sont de la définition de la Employé classe, qui vous pouvez trouver dans la première liste.

Dans la deuxième liste, le mot magique est étend. Quand on classe étend une classe existante, la classe étendant hérite automatiquement de la fonctionnalité qui est définie dans la classe existante. Donc le FullTimeEmployee classe hérite la nom et profession domaines.

La FullTimeEmployee classe hérite également de toutes les méthodes qui sont déclarés dans le Employé classe - setName, getName, setJobTitle, getJobTitle, et cutCheck. La FullTimeEmployee classe est une sous-classe du Employé classe.

Cela signifie que le Employé classe est le superclasse du FullTimeEmployee classe. Vous pouvez aussi parler en termes de parents de sang. La FullTimeEmployee classe est le enfant du Employé classe, et la Employé classe est le parent du FullTimeEmployee classe.

Il est presque (mais pas tout à fait) comme si le FullTimeEmployee classe a été définie par le code dans cette liste. Ce code est faux, mais instructif.

static import classe java.lang.System.out public FullTimeEmployee {double double setName vide private String nom-private String jobTitle-privé-privé benefitDeduction weeklySalary-publique (String nameIn) {name = nameIn-} public String getName () {return Nom} public void setJobTitle (String jobTitleIn) {jobTitle = jobTitleIn-} public String getJobTitle () {return jobTitle-} public void setWeeklySalary (Double weeklySalaryIn) {weeklySalary = weeklySalaryIn-} public à double getWeeklySalary () {return weeklySalary-} public setBenefitDeduction vide (Double benefitDedIn) {} benefitDeduction = benefitDedIn- à double getBenefitDeduction publique () {return} benefitDeduction- à double findPaymentAmount publique () {return weeklySalary - benefitDeduction-} public void cutCheck (Double amountPaid) {out.printf ("Pay à l' Afin de% s ", le nom) -out.printf (" (% s) *** $ ", jobTitle) -out.printf ("% ,. 2f n ", amountPaid) -}}

Pourquoi est-ce listage faux code? Eh bien, la principale différence entre cette liste et la situation de l'héritage dans les annonces précédentes est la suivante: Une classe de l'enfant ne peut pas référencer directement les champs privés de sa classe parent. Pour faire quelque chose avec des champs privés de la classe parente, la classe enfant doit appeler les méthodes d'accès de la classe parente.

Retour dans la deuxième liste, appelant setName (“ Rufus ”) serait légal, mais le code name = ” Rufus ” ne serait pas. Si vous croyez tout ce que vous lisez dans la dernière liste, vous penseriez que le code dans la FullTimeEmployee classe peut faire name = ” Rufus ”. Eh bien, il ne peut pas.

Vous ne devez pas la Employee.java déposer sur votre disque dur d'écrire du code qui étend la Employé classe. Tout ce que vous avez besoin est le fichier Employee.class.


» » » » Programmation Java: la création d'une sous-classe