Inhoudsopgave:
Video: Learn Java Programming with Beginners Tutorial 2024
U kunt subklassen in Java gebruiken. Het maken van subklassen is prima, maar je krijgt niets van deze subklassen tenzij je code schrijft om ze te gebruiken. Hier onderzoek je de code die gebruikmaakt van subklassen.
Nu is het moment aangebroken om jezelf te classificeren als een type-F-persoon, een type-P-persoon of een type-T-persoon.
- Een type-F persoon wil de grondbeginselen zien. (De letter F staat voor fundamentals.) "Laat me een programma zien waarin de principes in hun meest eenvoudige, meest basale vorm zijn vastgelegd", zegt de F-persoon. Een type-F persoon maakt zich geen zorgen over toeters en bellen. De bellen komen later en de fluitjes zullen nooit komen. Als u een type F-persoon bent, wilt u een programma zien dat de
FullTimeEmployee
enPartTimeEmployee
-subklassen gebruikt en vervolgens uit de weg gaat, zodat u wat werk kunt verzetten. - Een type-P-persoon wil praktische toepassingen. (De letter P staat voor praktisch.) Type-P mensen moeten ideeën in hun context zien; anders zweven de ideeën te snel weg. "Laat me een programma zien dat het nut aantoont van de
FullTimeEmployee
enPartTimeEmployee
-subklassen", zegt de type-P-persoon. 'Ik heb geen zin voor je stinkende abstracties. Ik wil voorbeelden uit de praktijk, en ik wil ze nu! " - Een type-T-persoon wil testen de code in de
FullTimeEmployee
enPartTimeEmployee
-subklassen. Het testen van de code houdt in dat de code wordt getest - de nauwkeurigheid van de uitvoer wordt gecontroleerd wanneer de invoer gewoon is, wanneer de invoer onverwacht is en zelfs wanneer de invoer volledig onrealistisch is. Bovendien wil de type-T-persoon een standaard, gemakkelijk herkenbare omlijning gebruiken voor de testcode, zodat andere programmeurs de testresultaten snel kunnen begrijpen. De type-T-persoon maakt JUnit-tests met deFullTimeEmployee
- enPartTimeEmployee
-subklassen.
De onderstaande code, die voor het type F-publiek is, is mager en eenvoudig en maakt goede leestijden voor het slapengaan.
Ga naar allmycode als u een type-P of type-T-persoon bent. com. De site bevat voorbeelden om te voldoen aan type-P en type-T-lezers.
Deze code toont u een programma zonder sleutel dat gebruikmaakt van de subklassen
FullTimeEmployee
en
PartTimeEmployee
. Dit is de uitvoer van het programma.
openbare klasse DoPayrollTypeF {
public static void main (String args []) {
FullTimeEmployee ftEmployee = new FullTimeEmployee ();
ftEmployee. setName ("Barry Burd");
ftEmployee. setJobTitle ("CEO");
ftEmployee.setWeeklySalary (5000.00);
ftEmployee. setBenefitDeduction (500, 00);
ftEmployee. cutCheck (ftEmployee. findPaymentAmount ());
Systeem. uit. println ();
PartTimeEmployee ptEmployee = new PartTimeEmployee ();
ptEmployee. setName ("Steve Surace");
ptEmployee. setJobTitle ("Driver");
ptEmployee. setHourlyRate (7. 53);
ptEmployee. cutCheck (ptEmployee. findPaymentAmount (10));
}
}
Om deze code te begrijpen, moet u drie klassen in de gaten houden:
Werknemer
,
FullTimeEmployee
en
PartTimeEmployee
.
De eerste helft van de code behandelt een voltijdwerknemer. Merk op hoeveel methoden beschikbaar zijn voor gebruik met de
ftEmployee
-variabele? U kunt bijvoorbeeld
ftEmployee bellen. setWeeklySalary
omdat
ftEmployee
type
FullTimeEmployee
heeft. U kunt ook
ftEmployee bellen. setName
omdat de klasse
FullTimeEmployee
de klasse
Werknemer
uitbreidt.
Omdat
cutCheck
wordt gedeclareerd in de
Employee
-klasse, kunt u
ftEmployee aanroepen. cutCheck
. Maar u kunt ook
ftEmployee bellen. findPaymentAmount
omdat een
findPaymentAmount
-methode zich in de klasse
FullTimeEmployee
bevindt.
Typen overeenkomen
Kijk opnieuw naar de eerste helft van de code. Let vooral op die laatste verklaring - die waarin de fulltime werknemer daadwerkelijk een cheque haalt. De verklaring vormt een mooie, lange reeks waarden en hun types. U kunt dit zien door de verklaring van binnenuit te lezen:
- Method
ftEmployee. findPaymentAmount
wordt aangeroepen met een lege parameterlijst. Dat is goed, want defindPaymentAmount
-methode neemt geen parameters in beslag. - De
findPaymentAmount
-methode retourneert een waarde van het typedouble
. - De
dubbele
waarde dieftEmployee. findPaymentAmount
wordt geretourneerd aan methodeftEmployee. cutCheck
. Dat is goed omdat demethode cutCheck
één parameter van het typedouble
gebruikt.
Bekijk de fantastische grafische illustratie.
Matchingparameters.Voer altijd de gewenste waardetypes in de parameterlijst van een methode in.
De tweede helft van het verhaal
In de tweede helft van de code maakt de code een object van het type
PartTimeEmployee
. Een variabele van het type
PartTimeEmployee
kan een aantal van dezelfde dingen doen die een
FullTimeEmployee
-variabele kan doen. De klasse
PartTimeEmployee
heeft echter niet de
setWeeklySalary
en
setBenefitDeduction
-methoden. In plaats daarvan heeft de klasse
PartTimeEmployee
de
setHourlyRate
-methode. Dus de een-na-laatste regel is een aanroep van de
setHourlyRate
methode.
De laatste regel van de code is verreweg het meest interessant. Op die regel geeft de code het nummer
10
(het aantal gewerkte uren) door aan de
findPaymentAmount
-methode. Vergelijk dit met de eerdere oproep naar
findPaymentAmount
- de oproep voor de fulltime werknemer in de eerste helft van de code.Tussen de twee subklassen
FullTimeEmployee
en
PartTimeEmployee
zijn twee verschillende
findPaymentAmount
-methoden. De twee methoden hebben twee verschillende parameterlijsten:
- De
fullTimeEmployee
-klassefindPaymentAmount
-methode neemt geen parameters in beslag. De - PartTimeEmployee
-klasse
findPaymentAmount-methode neemt één
int-parameter.
Dit is de norm voor de cursus. Het vinden van het betalingsbedrag voor een deeltijdwerknemer is niet hetzelfde als het vinden van het betalingsbedrag voor een fulltime werknemer. Een deeltijdse loonsterkte verandert elke week, afhankelijk van het aantal uren dat de werknemer in een week werkt. Het salaris van de fulltime werknemer blijft elke week hetzelfde. Dus de klassen
FullTimeEmployee
en
PartTimeEmployee
hebben beide
findPaymentAmount
-methoden, maar de methode van elke klasse werkt heel anders.