Presentation laddar. Vänta.

Presentation laddar. Vänta.

1 Mer om metoder, variabler, klasser och objekt. Kursboken: - Kapitel 6 - Kapitel 8.

Liknande presentationer


En presentation över ämnet: "1 Mer om metoder, variabler, klasser och objekt. Kursboken: - Kapitel 6 - Kapitel 8."— Presentationens avskrift:

1 1 Mer om metoder, variabler, klasser och objekt. Kursboken: - Kapitel 6 - Kapitel 8

2 2 Mer om klasser & objekt this Modifieraren static Inre klasser

3 3 Klassmetoder & klassvariabler Modifieraren static

4 4 Klassmetoder (=statiska metoder) kan anropas genom att använda klassnamnet – Inte objektnamnet T ex metoderna i Math -klassen är statiska: Math.floor(2.39);//Ger 2.0 För att skapa en klassmetod eller klassvariabel så skriver man static -modifieraren i metoddefinitionen

5 5 Klassvariabler (=Statiska variabler) Normalt så har varje objekt sitt eget dataområde med egna instansvariabler Om en variabel deklareras som static, så kommer bara en kopia av variabeln finnas för alla objekt som skapas av samma klass private static double rabatt;

6 6 I varuhuset – ”Idag 10% rabatt på alla glas- & konservburkar” Sylt 230g 18kr Marmelad 300g 20kr Tonfisk 275g 10kr Sardiner 310g 8kr public class BurkBurk { private static double rabatt; private String innehåll; private int vikt; private double pris;..plus en del metoder... Alla burkar (objekt) är skapade av klassen Burk, så var och en har sina egna instansvariabler av vikt, pris och innehåll. Men alla är rabatterade med samma procentsats, då rabatt är en klassvariabel! Exempel: LivsmedelsAvdelning.java tillsammans med Burk.java

7 7 Klassvariabler Alla objekt som skapats av samma klass delar på klassvariablerna  Om man ändrar en klassvariabels värde i en av objekten, så ändras den också för alla andra objekt! Om man ser någon gemensam egenskap mellan objekt, som man vill ska vara lika för alla objekt:  Då kan det vara aktuellt att använda klassvariabler.  Ofta kan det vara räknare Exempel: CountInstances.java tillsammans med Slogan.java Exempel: MainDemo.java tillsammans med Klassmetod_KlassVariabelDemo.java

8 8 Klassmetoder (=Statiska metoder) public static int trippel (int tal) { int resultat; resultat = tal * 3; return resultat; } public class Helper Eftersom det är en klassmetod, så anropas metoden enligt: värde = Helper.trippel(5);

9 9 Klassmetoder (=Statiska metoder) main är en statisk metod – En klassmetod. Den anropas av systemet utan att ett objekt skapas först.  public static void main (String args[]) {...} Statiska metoder kan referera till statiska- och lokala variabler Statiska metoder kan inte referera till instansvariabler  Instansvariablerna existerar inte förrän ett objekt existerar

10 10 this - referensen För att objekt ska kunna referera till ”sig själv”

11 11 this -referensen this referensen gör att ett objekt kan referera till sig självt Objekt

12 12 Tre sätt att använda this 1. Referera till egna instansvariabler eller instansmetoder T ex this.pris = temp_pris; //Tilldelning till egen instansvaríabel 2. Anropa egen konstruktor this(); //Anropar egen konstruktor utan inparametrar 3. Referens till det egna objektet T ex return this; //Returnerar en referens till sig själv (objektet självt) Exempel: This_Exempel.java tillsammans med ObjektA.java och ObjektB.java

13 13 1. this -referensen this referensen används för att:  Särskilja inparametrar i en metod (eller konstruktor) från instansvariabler med samma namn public class Konto { String namn; int kontoNummer; double balans; public Konto(String namn,int kontoNummer,double balans) { this.namn = namn; this.kontoNummer = kontoNummer; this.balans = balans; } Är de lokala variablerna från parameterlistan i metod huvudet Syftar på det här objektets instansvariabler

14 14 Vid anrop till egen konstruktor, så måste detta anrop stå som första sats 2. this -referensen public class Konto { String namn; int kontoNummer; double balans; public Konto(String namn,int kontoNummer,double balans) { this.namn = namn; this.kontoNummer = kontoNummer; this.balans = balans; } public Konto(String namn,int kontoNummer) { this(); //Anropar egen konstruktor utan inparametrar this.balans = 0.0; //Nyöppnat konto }

15 15 I t ex en metod kan referens till det egna objektet returneras 3. this -referensen public class Konto { String namn; int kontoNummer; double balans; public Konto(String namn,int kontoNummer,double balans) { this.namn = namn; this.kontoNummer = kontoNummer; this.balans = balans; } public Konto getKonto() { return this; //Returnerar en ref. till detta objekt }

16 16 Att returnera this -referensen Med this referensen kan man returnera en referens till det egna objektet. T ex: public Kub getKubObjekt() { return this; } Exempel: Returnera_This.java tillsammans med Kub.java

17 17 Garbage Collection

18 18 Garbage Collection När ett objekt inte längre har referenser till sig, så kan det inte heller kommas åt av programmet Objektet är oanvändbart och kallas därför för garbage (=skräp, sopor) Java utför periodisk automatic garbage collection.  Detta gör att det minne, som det oanvändbara objektet tar upp, automatiskt lämnas tillbaka till systemet

19 19 Inre klasser Klass som är inkapslad i en yttre klass

20 20 Inre klasser Förutom att en klass kan innehålla data och metoder, så kan en klass också innehålla andra klasser En klass som är deklarerad i en annan klass kallas för nästlad klass och om den inte är statisk kallas den för inre klass Yttre klass Inre klass public class YttreKlass { private class InreKlass { }

21 21 Inre klasser Är icke-statiska klasser. Alltså det får inte stå:  public static class InreKlass{} En inre klass är associerad med varje instans i den yttre klassen, dvs. vi kommer åt alla yttre metoder och -variabler från en inre klass En instans av en inre klass kan endast existera inuti en instans skapad av den yttre klassen Ex på hur en yttre och inre klass ”samarbetar”:  Exempel: TestInner.java tillsammans med Outer.java

22 22 Inre klasser En inre klass har tillgång till alla variabler och metoder i den omgivande yttre klassen, även privata

23 23 Inre klasser Vid kompilering så skapas en separat bytekod-fil (*.class) av den inre klassen. InreKlass finns deklarerad inuti en yttre klass YttreKlass. Två class-filer kommer att skapas vid kompilering: 1. YttreKlass.class 2. YttreKlass$InreKlass.class Inre klasser kan deklareras som static, men i det fallet kan de inte referera till instansvariabler eller instansmetoder.

24 24 Vad kan inre privata klasser användas till?  Består av minst tre typer av objekt: 1. Komponenter  T ex knappar, textfält, drop-downlister mm 2. Händelser  T ex händelsen att användaren klickar på en knapp 3. Lyssnare  T ex att ”fånga upp händelsen”, dvs. lyssna om användaren klickade på knappen  Denna (eller dessa) lyssnare byggs med fördel upp av en inre klass i den klass som beskriver användargränssnittet där komponenterna finns. Grafiska användargränssnitt


Ladda ner ppt "1 Mer om metoder, variabler, klasser och objekt. Kursboken: - Kapitel 6 - Kapitel 8."

Liknande presentationer


Google-annonser