Video: Konstruktor - Objektorientierte Programmierung in Java 3 ● Gehe auf SIMPLECLUB.DE/GO 2024
Wenn Sie ein objektorientiertes Programm in Java schreiben, denken Sie zunächst über die Daten nach. Du schreibst über Konten. Also, was ist ein Konto? Sie schreiben Code zum Bearbeiten von Schaltflächenklicks. Was ist ein Knopf? Sie schreiben ein Programm, um Gehaltsschecks an Mitarbeiter zu senden. Was ist ein Angestellter?
In diesem Beispiel ist ein Mitarbeiter jemand mit einem Namen und einer Berufsbezeichnung. Sicher, Mitarbeiter haben andere Eigenschaften, aber im Moment halten Sie sich an die Grundlagen. Der Code in dieser Liste definiert, was es bedeutet, ein Angestellter zu sein.
importiert statisches Java. lang. System. aus; öffentliche Klasse Employee {privater Stringname; private String JobTitel; public void setName (String nameIn) {name = nameIn;} public String getName () {Rückgabenname;} public void setJobTitle (String jobTitleIn) {jobTitle = jobTitleIn;} public String getJobTitle () {return jobTitle;} public void cutCheck (doppelter BetragPaid) {out. printf ("Bezahlen Sie in der Reihenfolge von% s", Name); aus. printf ("(% s) *** $", Jobtitel); aus. printf ("%,. 2fn", amountPaid);}}
In der Auflistung ist eine Employee-Klasse definiert. Sie können das, was Sie hier definieren, verwenden und die Definition erweitern, um neue, spezialisiertere Klassen zu erstellen. In dieser nächsten Auflistung definieren Sie eine neue Klasse - eine FullTimeEmployee-Klasse.
public class FullTimeEmployee erweitert Employee {private double weeklySalary; privater doppelter Vorteil Abzug; public void setWeeklySalary (doppelte wöchentlicheSalaryIn) {weeklySalary = weeklySalaryIn;} öffentliche doppelte getWeeklySalary () {return weeklySalary;} öffentliche void setBenefitDeduction (doppelte benefitDedIn) {benefitDeduction = benefitDedIn;} öffentliche doppelte getBenefitDeduction () {return benefitDeduction;} öffentliche doppelte findPaymentAmount () {return weeklySalary - benefitDeduction;}}
Wenn Sie sich die Auflistung ansehen, können Sie sehen, dass jede Instanz der FullTimeEmployee-Klasse zwei Felder hat: weeklySalary und benefitDeduction. Aber sind das die einzigen Felder, die jede FullTimeEmployee-Instanz hat? Nein, sind sie nicht.
Die erste Zeile besagt, dass die FullTimeEmployee-Klasse die vorhandene Employee-Klasse erweitert. Das bedeutet, dass jede FullTimeEmployee-Instanz neben einem weeklySalary und einer benefitDeduction auch zwei weitere Felder hat: name und jobTitle. Diese beiden Felder stammen aus der Definition der Employee-Klasse, die Sie in der ersten Auflistung finden.
In der zweiten Auflistung wird das Zauberwort erweitert. Wenn eine Klasse eine vorhandene Klasse erweitert, erbt die Erweiterungsklasse automatisch Funktionalität, die in der vorhandenen Klasse definiert ist.So erbt die FullTimeEmployee-Klasse die Felder name und jobTitle .
Die FullTimeEmployee-Klasse erbt auch alle Methoden, die in der Employee-Klasse deklariert sind - setName, getName, setJobTitle, getJobTitle und cutCheck. Die FullTimeEmployee-Klasse ist eine Unterklasse der Employee-Klasse.
Das bedeutet, dass die Employee-Klasse die Superklasse der FullTimeEmployee-Klasse ist. Sie können auch in Bezug auf Blutsverwandte sprechen. Die FullTimeEmployee-Klasse ist das Kind der Employee-Klasse und die Employee-Klasse ist das -Patent der FullTimeEmployee-Klasse.
Es ist fast (aber nicht ganz) so, als wäre die FullTimeEmployee-Klasse durch den Code in dieser Auflistung definiert worden. Dieser Code ist falsch, aber informativ.
importiert statisches Java. lang. System. aus; Öffentliche Klasse FullTimeEmployee {Privater Stringname; private String JobTitel; private DoppelwocheSalary; privater doppelter Vorteil Abzug; public void setName (String nameIn) {name = nameIn;} public String getName () {Rückgabewert;} public void setJobTitle (String jobTitleIn) {jobTitle = jobTitleIn;} public String getJobTitle () {return jobTitle;} public void setWeeklySalary (double weeklySalaryIn) {weeklySalary = weeklySalaryIn;} public double getWeeklySalary () {zurück weekSalary;} public void setBenefitDeduction (double benefitDedIn) {benefitDeduction = benefitDedIn;} public double getBenefitDeduction () {return benefitDeduction; public doppelt findPaymentAmount () {return weeklySalarySalary - benefitDeduction;} public void cutCheck (doppelter BetragPaid) {out. printf ("Bezahlen Sie in der Reihenfolge von% s", Name); aus. printf ("(% s) *** $", Jobtitel); aus. printf ("%,. 2fn", amountPaid);}}
Warum ist dieser Code gefälscht? Nun, der Hauptunterschied zwischen dieser Auflistung und der Vererbungssituation in den vorherigen Auflistungen ist dies: Eine untergeordnete Klasse kann nicht direkt auf die privaten Felder ihrer Elternklasse verweisen. Um etwas mit den privaten Feldern der übergeordneten Klasse zu tun, muss die untergeordnete Klasse die Accessor-Methoden der übergeordneten Klasse aufrufen.
Zurück in der zweiten Auflistung wäre der Aufruf von setName ("Rufus") legal, aber der Codename = "Rufus" wäre nicht zulässig. Wenn Sie glauben, alles, was Sie in der letzten Auflistung gelesen haben, könnten Sie denken, dass Code in der FullTimeEmployee-Klasse name = "Rufus" kann. Nun, kann es nicht.
Sie benötigen den Mitarbeiter nicht. Java-Datei auf Ihrer Festplatte, um Code zu schreiben, der die Employee-Klasse erweitert. Alles, was Sie brauchen, ist die Datei Mitarbeiter. Klasse.