(Microsoft PowerPoint - Java f\366rel\344sning 4 A

Dagens föreläsning, kap 2-4
Inte allt i kapitlen men lite blandat
Metoder
Åtkomstmodifierare
Parametrar
Konstruktorer
Karlstads universitet, Johan
Öfverberg
Funktionsanrop i Java (vid static)
Samma modul
Annan modul
Metodnamn(uttryck,…);
Modulnamn.metodnamn(uttryck,…);
class Test{
public static void main(String args[]){
int i=2,j=4,k,res;
k=metod(i);
System.out.println(k);
res=Math.max(i,j);
System.out.println(res);
}
public static int metod(int i){
return i*i;
}
}
Karlstads universitet, Johan
Öfverberg
Metodanrop i Java
Vad är fel?
public class Test{
public int metod(int i){
System.out.println("metod i Test körs");
return i*i;
}
public static void main(String args[]) {
int i=2,j=4,k,res;
k=metod(i);
System.out.println(k);
res=Math.max(i,j);
System.out.println(res);
}
}
Lösningen är inte att göra metod static!
Karlstads universitet, Johan
Öfverberg
Karlstads Universitet, Johan Öfverberg
1
Åtkomstmodifierare
till fält och metoder
private
– inkapsling, åtkomst enbart i objektet
protected
– inkapsling, åtkomst enbart i objektet, kan ärvas
public
– ej inkapsling, åtkomst ’överallt’
Paket åtkomst
Karlstads universitet, Johan
Öfverberg
Metodmodifierare
final
– Metoden går inte att omdefiniera i subklasser
synchronized
– Metoden innehåller synkroniseringslås, används
vid flertrådade applikationer
native
– Metoden är implementerad i annat
programmeringsspråk
Karlstads universitet, Johan
Öfverberg
Metodmodifierare
abstract
– Metoden saknar implementation, måste
implementeras i subklasss
static
– Metoden är en klassmetod som kan anropas direkt via
klassnamnet, har endast tillgång till static deklarerade
metoder och attribut (existerar fristående av objekt)
public, private och protected
– inkapslingskontroll
Karlstads universitet, Johan
Öfverberg
Karlstads Universitet, Johan Öfverberg
2
Inkapslade datatyper
De primitiva datatyperna finns även
representerade som Java-klasser
Heter samma som datatypen fast inleds med versal
– int är undantag, klassen heter Integer
– char är undantag, klassen heter Character
Objekt ur dessa datatyper skall inte förväxlas med
variabler ur de primitiva datatyperna
Karlstads universitet, Johan
Öfverberg
Konstruktormetoden
Då ett Javaobjekt skapas görs det mha.
nyckelordet new KlassNamn();
– KlassNamn() är ett anrop till en metod med samma
namn som klassen (kallas konstruktor)
– denna metod måste anropas vid tillverkning av objekt
– går att definiera en egen konstruktor, används isf.
– om ingen egendefinierad används en defaultkonstruktor
Om en egendefinierad konstruktor finns måste den
användas
Karlstads universitet, Johan
Öfverberg
Konstruktor i Java (1/2)
public class Klocka {
private int tim, min, sek;
public Klocka(){
this (0);//this är en referens till objektet
}
public Klocka(int t){
this(t,0);
}
public Klocka(int t, int m){
this(t,m,0);
}
public Klocka(int t, int m, int s){
tim=t;
min=m;
sek=s;
}
public String getTid(){
return (tim+":"+min+":"+sek);
Karlstads universitet, Johan
}
Öfverberg
Karlstads Universitet, Johan Öfverberg
3
Konstruktor i Java (2/2)
public static void main(String[] args) {
Klocka t1 = new Klocka(10, 59, 59);
System.out.println("t1 är nu "+t1.getTid());
t1 = new Klocka(10,59);
System.out.println("t1 är nu "+t1.getTid());
t1 = new Klocka(10);
System.out.println("t1 är nu "+t1.getTid());
t1 = new Klocka();
System.out.println("t1 är nu "+t1.getTid());
}
}
Karlstads universitet, Johan
Öfverberg
Konstruktoranrop
Vid egendefinierad konstruktor i superklass
– i subklass måste ett anrop till superklassens
konstruktor ske manuellt super(param..);
Vid användande av defaultkonstruktor i
superklass
– anrop kommer att ske automatiskt innan
subklassens konstruktor körs
Karlstads universitet, Johan
Öfverberg
Metodanrop i Java
Nu funkar det!
public class Test{
public Test(){
int i=2,j=4,k,res;
k=metod(i);
System.out.println(k);
res=Math.max(i,j);
System.out.println(res);
}
public int metod(int i){
System.out.println("metod i Test körs");
return i*i;
}
public static void main(String args[]) {
Test t=new Test();
}
}
Karlstads universitet, Johan
Öfverberg
Karlstads Universitet, Johan Öfverberg
4