Video: Programmering 1 - C# Klasser, en introduktion 2024
När du skriver ett objektorienterat program i Java börjar du med att tänka på data. Du skriver om konton. Så vad är ett konto? Du skriver kod för att hantera knapptryckningar. Så vad är en knapp? Du skriver ett program för att skicka lönecheckkontroller till anställda. Vad är en anställd?
I det här exemplet är en anställd någon med namn och jobbtitel. Visst, anställda har andra egenskaper, men för nu håller du dig till grunderna. Koden i den här listan definierar vad det innebär att vara anställd.
importera statisk java. lang. Systemet. ut; offentlig klass Anställd {privat String namn; Private String jobTitle; public void setName (String nameIn) {name = nameIn;} public String getName () {return name;} public void setJobTitle (String jobTitleIn) {jobTitle = jobTitleIn;} public String getJobTitle () {return jobTitle;} public void cutCheck dubbelbeloppetPaid) {ut. printf ("Betal till ordningen av% s", namn); ut. printf ("(% s) *** $", jobTitle); ut. printf ("%,. 2fn", amountPaid);}}
I noteringen definieras en anställdsklass. Du kan använda det du definierar här och utvidga definitionen till att skapa nya, mer specialiserade klasser. Så i den här nästa noteringen definierar du en ny klass - en FullTimeEmployee-klass.
allmänklass FullTimeEmployee utökar anställd {privat dubbel veckaSalary; privat dubbelförmånsavdrag Offentlig tvistlösningWeeklySalary (double weeklySalaryIn) {weeklySalary = weeklySalaryIn}} public double getWeeklySalary () {return weeklySalary;} Offentlig tomgångssättningBenefitDeduction (double benefitDedIn) {benefitDeduction = benefitDedIn;} Offentlig dubbelförbättradavdrag () {Return BenefitDeduction;}) {return weeklySalary-benefitDeduction;}}
Titta på listan kan du se att varje instans av FullTimeEmployee-klassen har två fält: weeklySalary and benefitDeduction. Men är de de enda fälten som varje FullTimeEmployee-instans har? Nej, det är de inte.
Den första raden säger att FullTimeEmployee-klassen utökar den befintliga Medarbetarklassen. Detta innebär att förutom att ha en veckovisal och en förmånsavdrag har varje FullTimeEmployee-instans också två andra fält: namn och jobTitle. Dessa två fält kommer från definitionen av Medarbetarklassen, som du hittar i den första listan.
I den andra noteringen sträcker sig det magiska ordet . När en klass utökar en befintlig klass, förvärvar den utvidgade klassen automatiskt funktionalitet som definierats i den befintliga klassen.Alltså, FullTimeEmployee-klassen ärverger namnen och jobTitle-fälten.
Klassen FullTimeEmployee ärver även alla metoder som deklareras i Medarbetarklassen - setName, getName, setJobTitle, getJobTitle och cutCheck. FullTimeEmployee-klassen är en underklass i Medarbetarklassen.
Det betyder att Medarbetarklassen är superklassen i FullTimeEmployee-klassen. Du kan också prata när det gäller släktingar. FullTimeEmployee-klassen är barnet i Medarbetarklassen och Medarbetarklassen är föräldern i FullTimeEmployee-klassen.
Det är nästan (men inte riktigt) som om FullTimeEmployee-klassen definierades av koden i den här listan. Denna kod är falsk men informativ.
importera statisk java. lang. Systemet. ut; offentlig klass FullTimeEmployee {privat String namn; Private String jobTitle; privata dubbelvecka varje vecka; privat dubbelförmånsavdrag public void setName (String nameIn) {name = nameIn;} public String getName () {returnamn;} public void setJobTitle (String jobTitleIn) {jobTitle = jobTitleIn;} public String getJobTitle () {return jobTitle;} public void setWeeklySalary dubbel veckaSalaryIn) {weeklySalary = weeklySalaryIn;} public double getWeeklySalary () {return weeklySalary;} public void setBenefitDeduction (double benefitDedIn) {benefitDeduction = benefitDedIn;} offentliga double getBenefitDeduction () {return benefitDeduction;} offentliga double findPaymentAmount () {returnera weeklySalary - benefitDeduction;} public void cutCheck (double amountPaid) {out. printf ("Betal till ordningen av% s", namn); ut. printf ("(% s) *** $", jobTitle); ut. printf ("%,. 2fn", amountPaid);}}
Varför är denna notering falsk kod? Jo, den största skillnaden mellan den här noteringen och arvsituationen i tidigare listor är följande: En barnklass kan inte direkt referera till de privata fälten i sin föräldraklass. För att göra något med föräldrarklassens privata fält måste barnklassen ringa föräldrarklassens accessor metoder.
Tillbaka i den andra noteringen, skulle call setName ("Rufus") vara lagligt, men kodnamnet = "Rufus" skulle inte vara. Om du tror allt du läser i den senaste listan, skulle du tro att den här koden i FullTimeEmployee-klassen kan göra namnet = "Rufus". Jo det kan det inte.
Du behöver inte anställd. java-filen på hårddisken för att skriva kod som utökar medarbetarklassen. Allt du behöver är filen Medarbetare. klass.