Første
Klassedefinitioner - adgangskontrol serie, Planche nr. 22
Kursus Indhold

Udskrift af : Klassedefinitioner - adgangskontrol

Planche 1 : Klassedefinitioner - adgangskontrol

Erklæringer af

Planche 2 : Modifiers

"simple modifiers" "Access modifiers"

Planche 3 : Abstract og Final

Planche 4 : Abstract

Planche 5 : Abstract eksempel:

Vores Cykelklasse (fra igår)
abstract class Cykel {
   public abstract void skiftGear();
}
Vi bliver nød til at lave underklasser, f.eks.:
class MountainBike extends Cykel {
  public void skiftGear() {
     this.skift12gear();
  }
}

// eller
class Tandem extends Cykel {
  public void skiftGear() {
     this.skift10gear();
  }
}

Planche 6 : Final

Eksempel på variabel:

final int count = 0;

Planche 7 : Static data

static variabel er knyttet til klassen - ikke afledte objekter

Kaldes klassevariable

Variablen findes kun en gang - uanset hvor mange objekter der laves

Variablen kan læses både vhj. af klassenavnet og en reference til et objekt af klassen.

class Tandem extends Cykel {
   static int antalTandem;
   ...
}
// både
   Tandem.antalTandem = 0;
// og
   Tandem tn = new Tandem();
   tn.antalTandem++
Sidstnævnte FRARÅDES!

Planche 8 : Static metoder

Planche 9 : Native metoder

Kun metoder kan være native

Planche 10 : Adgangkontrol - access modifiers

Også kendt som de 4 P'er

Adgangskontrol bestemmer hvilke klasser der må:

Klasser kan kun være 'public' eller "venlig" (Package)

Variable og metoder kan være alle 4 ting.

Planche 11 : De 4 p'er

Planche 12 : Package

Default - når intet er angivet

Klasser, metoder og variable kan nås fra alle klasser i samme pakke

Kodeord: kan ikke angives

Planche 13 : Private

Metoder og variable er kun tilgængelige i den klasse, hvor de er defineret.

Kodeord: private

Planche 14 : Public

Metoder, variable og klasser er tilgængelige overalt i java-systemet.

Kodeord: public

Planche 15 : Protected

Styrer forholdet mellem en klasses superklasser og subklasser

Metoder, variable og klasser er tilgængelige for alle klasser i samme pakke, samt for subklasser af den pågældende klasser.

Kodeord: protected

Planche 16 : Adgangsrækkefølge

4 -> 1 - mere restriktiv 1 -> 4 - friere adgang

Hvorfor er det vigtigt?

Planche 17 : Polymorfing!!!

Planche 18 : Vores cykel-eksempel

Hvis vi har en (abstract) klasse Cykel...

Den må vi udvide for at få lov til at realisere...

Planche 19 : Modelering i software

abstract class Cykel {
   public abstract void skiftGear(boolean trinOp);
}
Forskellege ikke-abstract klasser
class MountainBike extends Cykel {
  public void skiftGear(op) {
     int i = getGear();
     if (op)
       this.set12gear(++i);
     else
       this.set12gear(--i);
  }
}

// eller
class Tandem extends Cykel {
  public void skiftGear(op) {
     if (op)
      this.skift10gear(1);
     else
      this.skift10gear(-1);
  }
}

// eller også
class BørneCykel extends Cykel {
  public void skiftGear(op) {
      sigLyd("Nyøøn Nyøøhhhn!");
  }
}

Planche 20 : Skift gear!

Uanset hvad man "skifter gear" på

Får man den rigtige reaktion...

...
  public void setHøjereGearing(Cykel ck) {
       ck.skiftGear(true);
  }
...

Planche 21 : Adgang og overskrivning

En metode må ikke overskrives med en mere restriktiv definition!!!

Eksempel:

Hvad ville der ske, hvis en af metodedefinitionerne skiftGear var private?

Planche 22 : Main metoden

Vigtigt eksempel på brug af modifiers - main SKAL findes i en aplikationsklasse. (argv kan være et vilkårligt navn - resten skal matche præcist)
java ProgramNavn Parameter1 Parameter2 

Når main er kaldt, vil argv[0] indeholde teksten "Parameter1", argv[1] "Parameter2"


© 2000 BLA*net - Leif E. Andersen, leander@blanet.dk
Første
Klassedefinitioner - adgangskontrol serie, Planche nr. 22