Video: Learn Java Programming with Beginners Tutorial 2025
Når du skriver et objektorientert program i Java, begynner du å tenke på dataene. Du skriver om kontoer. Så hva er en konto? Du skriver kode for å håndtere knappeklikk. Så hva er en knapp? Du skriver et program for å sende lønnskontroller til ansatte. Hva er en ansatt?
I dette eksemplet er en ansatt noen med et navn og en jobbtittel. Visst, ansatte har andre egenskaper, men for nå holder seg til det grunnleggende. Koden i denne oppføringen definerer hva det betyr å være en ansatt.
importer statisk java. Lang. System. ute; offentlig klasse Ansatt {privat String navn; Private String jobTitle; offentlig stemmegivningsnavn (String NameIn) {name = nameIn;} offentlig String getName () {return navn;} offentlig tomgang setJobTitle (String jobTitleIn) {jobTitle = jobTitleIn;} offentlig String getJobTitle () {return jobTitle;} offentlig ugyldig kontroll double amountPaid) {out. printf ("Betal til ordren av% s", navn); ute. printf ("(% s) *** $", jobTitle); ute. printf ("%,. 2fn", amountPaid);}}
I noteringen er en Employee-klasse definert. Du kan bruke det du definerer her og utvide definisjonen for å lage nye, mer spesialiserte klasser. Så i denne neste notering definerer du en ny klasse - en FullTimeEmployee-klasse.
offentlig klasse FullTimeEmployee utvider Medarbeider {privat dobbelt ukentligSalar; privat dobbeltfordeler; offentlig ugyldig settWeeklySalary (double weeklySalaryIn) {weeklySalary = weeklySalaryIn;} offentlig dobbelt getWeeklySalary () {return weeklySalary;} offentlig tomt settBenefitDeduction (double benefitDedIn) {benefitDeduction = benefitDedIn;} offentlig dobbeltbenefitavdrag () {avkastningsavdrag;} offentlig dobbeltfinansieringPremieAmount) {return weeklySalary-benefitDeduction;}}
Når du ser på oppføringen, kan du se at hver forekomst av FullTimeEmployee-klassen har to felt: weeklySalary and benefitDeduction. Men er de de eneste feltene som hver FullTimeEmployee-forekomst har? Nei, det er de ikke.
Den første linjen sier at FullTimeEmployee-klassen utvider den eksisterende Medarbeiderklassen. Dette betyr at i tillegg til å ha en weeklySalary og en benefitDeduction, har hver FullTimeEmployee-forekomst også to andre felt: navn og jobTitle. Disse to feltene kommer fra definisjonen av Medarbeider-klassen, som du finner i den første oppføringen.
I den andre noteringen strekker det magiske ordet . Når en klasse utvider en eksisterende klasse, arver klassen automatisk funksjonalitet som er definert i den eksisterende klassen.Så, FullTimeEmployee-klassen arver navnene og jobTitle-feltene.
FulltimeEmployee-klassen arver også alle metodene som er deklarert i Medarbeider-klassen - setName, getName, setJobTitle, getJobTitle og cutCheck. FullTimeEmployee-klassen er en underklasse av Medarbeider-klassen.
Det betyr at Medarbeider klassen er superklasse av FullTimeEmployee-klassen. Du kan også snakke i form av blodfamilier. FulltimeEmployee-klassen er barn av Medarbeider-klassen, og Medarbeider-klassen er forelder av FullTimeEmployee-klassen.
Det er nesten (men ikke helt) som om FullTimeEmployee-klassen ble definert av koden i denne oppføringen. Denne koden er falsk, men informativ.
importer statisk java. Lang. System. ute; offentlig klasse FullTimeEmployee {private String navn; Private String jobTitle; privat dobbelt ukentligsalg; privat dobbeltfordeler; offentlig tomt settnavn (String NameIn) {name = nameIn;} offentlig String getName () {return navn;} offentlig tomgang setJobTitle (String jobTitleIn) {jobTitle = jobTitleIn;} offentlig String getJobTitle () {return jobTitle;} offentlig tomgang setWeeklySalary double weeklySalaryIn) {weeklySalary = weeklySalaryIn;} offentlig dobbelt getWeeklySalary () {return weeklySalary;} offentlig tomt settBenefitDeduction (double benefitDedIn) {benefitDeduction = benefitDedIn;} offentlig dobbelt fåBenefitDeduction () {return benefitDeduction;} offentlig double findPaymentAmount () {return weeklySalary - benefitDeduction;} offentlig ugyldig sjekke (dobbeltbeløpPaid) {ut. printf ("Betal til ordren av% s", navn); ute. printf ("(% s) *** $", jobTitle); ute. printf ("%,. 2fn", amountPaid);}}
Hvorfor er denne oppføringen falsk kode? Vel, den største forskjellen mellom denne oppføringen og arvssituasjonen i tidligere oppføringer er dette: En barneklasse kan ikke direkte referere til de private feltene i sin overordnede klasse. For å gjøre noe med foreldreklassens private felt, må barneklassen ringe til foreldreklassens tilgangsmetoder.
Tilbake i den andre oppføringen, ville det være lovlig å kalle setName ("Rufus"), men kodenavnet = "Rufus" ville ikke være. Hvis du tror alt du leser i den siste oppføringen, tror du at koden i FullTimeEmployee-klassen kan gjøre navnet = "Rufus". Vel, det kan det ikke.
Du trenger ikke Medarbeider. java-fil på harddisken din for å skrive kode som utvider ansattes klassen. Alt du trenger er filen Ansatt. klasse.
