objektorienteeritud programmeerimine · 2020. 3. 10. · möödunud nädalal •loeng –list....
TRANSCRIPT
![Page 1: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/1.jpg)
Objektorienteeritud programmeerimine
10. märts, 5. loeng
Marina Lepp
1
![Page 2: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/2.jpg)
Möödunud nädalal
• Loeng– List. Liides
• Lisapraktikum
• Praktikum– Sõnetöötlus. Tekstiline I/O. Listid
• Delta keskus on tartlaste 2019. aastalemmikhoone ja Tartu parim ühiskondlik ehitis
• 08.03 - Naistepäev
2
![Page 3: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/3.jpg)
Umbes mitu tundi tegelesite eelmisel nädalal selle ainega (loeng+praktikum+iseseisvalt)?
1. 0-2 tundi
2. 2-4 tundi
3. 4-6 tundi
4. 6-8 tundi
5. 8-10 tundi
6. 10-12 tundi
7. 12-14 tundi
8. üle 14 tunni
3
![Page 4: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/4.jpg)
Kuivõrd olete selle ainega graafikus?
1. Isegi ees
2. Täiesti graafikus
3. Veidi maas, aga saan ise hakkama
4. Kõvasti maas, vajan abi
5. Ei oska öelda
4
![Page 5: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/5.jpg)
Organisatoorsed küsimused
• Plagiaadijuhtumid kodutöödes
– https://wiki.ut.ee/display/oppekorraldus/Akadeemiline+petturlus
5
![Page 6: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/6.jpg)
Täna
• Pärimine ja polümorfism
– Ülemklassid ja alamklassid
• Meetodite ülekatmine
• Klass Object
6
![Page 7: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/7.jpg)
Liides, klass, objekt
7
Liides
Klass
Objekt
klasside loomise plaan või üldistus (blueprint of class)
objektide loomise plaan või üldistus (blueprint of object); objekti tüüp
isend; üksus, millel on kindel olekning käitumine; füüsiline olemasolu mälus
![Page 8: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/8.jpg)
Liides public interface Xline {void meetod();
}
class X1 implements Xline{public void meetod() {System.out.println("X1");
}}
public class TestX {public static void main(String[] args) {
X1 x1 = new X1();Xline x2 = new X2();Xline[] xid = {x1, x2};for (Xline x : xid)
x.meetod();}
}
class X2 implements Xline{public void meetod() {System.out.println("X2");
}}
![Page 9: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/9.jpg)
Liides: mis on lubatud?
9
public interface Xline {
int konstant = 10; //public static final
//private String s = "Viga!";
void meetod1(); //public abstract
default void meetod3(){
System.out.println("Vaiketegevused");
}
private void abimeetod(){
System.out.println("Abi");
}
/*void meetod4(){
System.out.println("Viga!");
}*/
}
![Page 10: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/10.jpg)
Comparable
10
public class Isik {private String eesnimi;private String perenimi;private int sAasta;public Isik(String eesnimi, String perenimi, int sAasta) {
this.eesnimi = eesnimi;this.perenimi = perenimi;this.sAasta = sAasta;
}public String toString() {
return "Isik{" + "eesnimi='" + eesnimi + '\'' +", perenimi='" + perenimi + '\'' + ", sAasta=" + sAasta + '}';
}}
![Page 11: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/11.jpg)
public class Isik
implements Comparable<Isik>{
11
public int compareTo(Isik teine) {
//perenime alusel
if (perenimi.compareTo(teine.perenimi) != 0)
return perenimi.compareTo(teine.perenimi);
//eesnime alusel
if (eesnimi.compareTo(teine.eesnimi) != 0)
return eesnimi.compareTo(teine.eesnimi);
//sünniaasta alusel
return Integer.compare(sAasta, teine.sAasta);
}
![Page 12: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/12.jpg)
Pärilus (ingl. inheritance)
• Mehhanism, mis lisab igale klassikirjeldusele vahetu ülemklassi liikmekirjeldused
• Moodustub alamklasside ja ülemklasside hierarhiline struktuur
• Javas saab igal klassil olla üks vahetu ülemklass
• Põhiline eelis selles, et kui ülemklass on juba koostatud, siis saab seda kasutada uute spetsialiseeritud klasside loomiseks
• Kuna alamklassi võimalused laienevad, siis kasutatakse sõna extends
12
![Page 13: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/13.jpg)
Päriselus ka • Loomad
– http://et.wikipedia.org/wiki/Loomariik
• Taimed• Sõidukid• …• …• …
• Ülemklassid üldisemad, alamklassid spetsiifilisemad
13
![Page 14: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/14.jpg)
Pärilus on tavaline
14
![Page 15: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/15.jpg)
15
public class A {
int a;
A(int a){
this.a = a;
}
void meetoda(){
System.out.println("Olen A isend, a = " + a);
}
}
public class TestAB {
public static void main(String[] args) {
A a1 = new A(17);
a1.meetoda();
}
}
Olen A isend, a = 17
![Page 16: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/16.jpg)
Pärilus
class A {
. . .
}
class B extends A {
. . .
}
Ülemklass
Alamklass
![Page 17: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/17.jpg)
17
public class B extends A {
int b;
B(int a, int b){
super(a);
this.b = b;
}
void meetodb(){
System.out.println("Olen B isend, b = " + b);
}
}
public class TestAB {
public static void main(String[] args) {
B b1= new B(12,45);
b1.meetodb();
}
}
Olen B isend, b = 45
![Page 18: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/18.jpg)
18
public class B extends A {
int b;
B(int a, int b){
super(a);
this.b = b;
}
}
public class A {
int a;
A(int a){
this.a = a;
}
void meetoda(){
System.out.println("Olen A isend, a = " + a);
}
}
![Page 19: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/19.jpg)
19
Mida väljastab järgmine programmilõik?
B b1 = new B(12, 45);
System.out.println(b1.a);
1. 12
2. 45
3. mitte midagi
4. midagi muud
5. veateate
![Page 20: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/20.jpg)
20
public class B extends A {
int b;
B(int a, int b){
super(a);
this.b = b;
}
}
public class TestAB {
public static void main(String[] args) {
B b1 = new B(12, 45);
b1.meetoda();
}
} Olen A isend, a = 12
![Page 21: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/21.jpg)
21
Mida väljastab järgmine programmilõik?
A a1 = new A(17);
System.out.println(a1.meetodb());
1. 0
2. 17
3. mitte midagi
4. midagi muud
5. veateate
![Page 22: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/22.jpg)
22
Kas klassi B võib lisada oma meetodi meetoda?
void meetoda(){
System.out.println("Olen B isend,
a = " + a);
}
1. jah
2. ei
![Page 23: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/23.jpg)
Ülekate (ingl. overriding)
• Vahel on vaja ülemklassist päritud meetodi puhul, et see töötaks alamklassi puhul teistmoodi kui ülemklassis
• Sellist sama signatuuriga meetodi uuestikirjeldamist alamklassis nimetatakse meetodi ülekatmiseks
• Väljakutse puhul rakendatakse klassis kirjeldatud meetodit
23
![Page 24: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/24.jpg)
24
public class B extends A {
int b;
B(int a, int b){
super(a);
this.b = b;
}
void meetodb(){
System.out.println("Olen B isend, b = " + b);
}
void meetoda(){
System.out.println("Olen B isend, a = " + a);
}
}
public class TestAB {
public static void main(String[] args) {
B b1= new B(12, 45);
b1.meetoda();
}
} Olen B isend, a = 12
![Page 25: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/25.jpg)
Võtmesõna super
• Kaks rakendusviisi
– ülemklassi konstruktori poole pöördumiseks
– vahetu ülemklassi nende liikmete poole pöördumiseks, mis on üle kaetud
25
![Page 26: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/26.jpg)
Võtmesõna super
26
public class B extends A {
int b;
B(int a, int b){
super(a);
this.b = b;
}
void meetoda(){
System.out.println("Olen B isend, a = " + a);
}
void meetodb(){
System.out.println("Olen B isend, b = " + b);
}
void meetodaAst(){
super.meetoda();
}
}
![Page 27: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/27.jpg)
Ülemklass, alamklass
class B extends A
A a1 = new A(17);
B b1 = new B(12,45);
a1 on A isend: a1 instanceof A
b1 on B isend: b1 instanceof B
b1 on ka A isend: b1 instanceof A27
Klassis B
Näiteks peaklassis
true
true
true
instanceof
![Page 28: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/28.jpg)
Ülemklass ja alamklass
• Muutuja, mis on defineeritud ülemklassi tüüpi, võib viidataalamklassi isendileB b3 = new B(34, 89);
A a3 = b3;
– Juurdepääs isendiväljadele ja -meetoditele sõltub muutujatüübist
• Võib konstrueerida alamklassi konstruktoriga– Loeb ikkagi (eelkõige) muutuja tüüp
A a2 = new B(14, 78);
28
![Page 29: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/29.jpg)
Mida väljastab järgmine programmilõik?
29
A a3 = new A(45);
B b3 = new B(34, 89);
a3 = b3;
System.out.println(a3.a);
1. 45
2. 34
3. 89
4. mitte midagi
5. midagi muud
6. veateate
![Page 30: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/30.jpg)
Mida väljastab järgmine programmilõik?
30
A a3 = new A(45);
B b3 = new B(34, 89);
b3 = a3;
System.out.println(b3.a);
1. 45
2. 34
3. 89
4. mitte midagi
5. midagi muud
6. veateate
![Page 31: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/31.jpg)
class B extends A
• A a2 = new B(14, 78);
• B b2 = new A(15);
31
Veateade
![Page 32: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/32.jpg)
32
Mida väljastab järgmine programmilõik?
A a2 = new B(14, 78);
System.out.println(a2 instanceof A);
1. true
2. false
3. midagi muud
4. mitte midagi
5. veateate
![Page 33: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/33.jpg)
33
Mida väljastab järgmine programmilõik?
A a2 = new B(14, 78);
System.out.println(a2 instanceof B);
1. true
2. false
3. midagi muud
4. mitte midagi
5. veateate
![Page 34: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/34.jpg)
A a2 = new B(14, 78);
a2 on A isend
a2 instanceof A
a2 on B isend
a2 instanceof B
34
true
true
![Page 35: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/35.jpg)
35
Mida väljastab järgmine programmilõik?
A a2 = new B(14, 78);
System.out.println(a2.a);
1. 0
2. 14
3. midagi muud
4. mitte midagi
5. veateate
![Page 36: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/36.jpg)
36
Mida väljastab järgmine programmilõik?
A a2 = new B(14, 78);
a2.meetoda();
1. Olen A isend, a = 14
2. Olen B isend, a = 14
3. midagi muud
4. mitte midagi
5. veateate
![Page 37: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/37.jpg)
37
Mida väljastab järgmine programmilõik?
A a2 = new B(14, 78);
System.out.println(a2.b);
1. 0
2. 78
3. midagi muud
4. mitte midagi
5. veateate
![Page 38: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/38.jpg)
38
Mida väljastab järgmine programmilõik?
A a2 = new B(14, 78);
a2.meetodb();
1. Olen B isend, b = 78
2. Olen A isend, b = 78
3. midagi muud
4. mitte midagi
5. veateate
![Page 39: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/39.jpg)
Kuidas siis on?
• Kui on defineeritud ülemklassi isendina, siis saab kätte vaid ülemklassis olevaid meetodeid
• Kui aga meetod on üle kaetud, siis dünaamilise (hilise) seostamise tõttu võetakse see, mis “kõige lähemal” on ülemklasside poole minnes
39
![Page 40: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/40.jpg)
A a2 = new B(14, 78);
• a2.b
• a2.meetodb();
• ((B)a2).b
• ((B)a2).meetodb();
40
Veateade
Veateade
Tüübiteisendus
Sulud, sest . on kõrgema
prioriteediga, kui (B)
78
Olen B isend, b = 78
![Page 41: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/41.jpg)
Pärilus, juurdepääs isendi elementidele
Alamklassist on juurdepääs kõikidele ülemklassiliikmetele välja arvatud need, mis on deklareeritudprivaatseks (piiritleja private).
41
public class A {
private int a;
A(int a){
this.a = a;
}
void meetoda(){
System.out.println("Olen A isend,
a = " + a);
}
}
![Page 42: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/42.jpg)
42
public class TestAB {
public static void main(String[] args) {
A a1 = new A(17);
//System.out.println(a1.a); VIGA
a1.meetoda();
}
}
public class A {
private int a;
A(int a){
this.a = a;
}
void meetoda(){
System.out.println("Olen A isend, a
= " + a);
}
}
![Page 43: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/43.jpg)
Klass B muutus vigaseks!
43
public class B extends A {
int b;
B(int a, int b){
super(a);
this.b = b;
}
void meetoda(){
System.out.println("Olen B isend, a = " + a);
}
void meetodb(){
System.out.println("Olen B isend, b = " + b);
}
}
![Page 44: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/44.jpg)
Ka meetod võib olla privaatne
44
public class A {
private int a;
A(int a){
this.a = a;
}
private void meetoda(){
System.out.println("Olen A isend, a = " + a);
}
}
public class B extends A {
...
void meetoda(){
System.out.println("Olen B isend, a = " + a);
}
void meetodaAst(){
super.meetoda();
}
}
![Page 45: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/45.jpg)
protected
• kaitstud
• nähtav nii oma paketis kui ka alamklassides (mis võivad olla teistes pakettides)
45
![Page 46: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/46.jpg)
Kaitstud
46
public class A {
protected int a;
A(int a){
this.a = a;
}
protected void meetoda(){
System.out.println("Olen A isend,
a = " + a);
}
}
public class TestAB {
public static void main(String[] args) {
A a1 = new A(17);
System.out.println(a1.a);
a1.meetoda();
}
}
![Page 47: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/47.jpg)
Klassis B ikka viga!
47
public class B extends A {
int b;
B(int a, int b){
super(a);
this.b = b;
}
void meetoda(){
System.out.println("Olen B isend, a = " + a);
}
void meetodb(){
System.out.println("Olen B isend, b = " + b);
}
}
ülekate ei tohi kitsendada meetodi nähtavust,vaja piiritlejat protected või public
![Page 48: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/48.jpg)
Juurdepääsetavus
48
Piiritleja Samas klassis
Sama paketiklassis
Teises paketis olevas alam-klassis
Suvalisesklassis
private jah ei ei ei
(puudub)„package-private“
jah jah ei ei
protected jah jah jah ei
public jah jah jah jah
http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
![Page 49: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/49.jpg)
49
Kui ülemklassis on meetod avalik (public), kas alamklassis saab selle
meetodi ülekate olla privaatne?
1. jah
2. ei
![Page 50: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/50.jpg)
50
Kas kaitstud (protected) meetoditele on juurdepääs ka nendest alamklassidest, mis
on teistes pakettides?
1. jah
2. ei
![Page 51: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/51.jpg)
Mis on päritav, mis mitte?• Alamklass pärib
– avalikud (public) ja kaitstud (protected) isendiväljad, meetodid
– samas paketis ilma juurdepääsu piiritlejata isendiväljad ja meetodid
• Alamklass ei päri– ülekaetud isendiväljad ja meetodid
• saab kasutada võtmesõnaga super
– privaatsed (private) isendiväljad ja meetodid
• Alamklassis võib kasutada– ülemklassi konstruktorid (super)
– staatilised väljad ja meetodid (avalikud, kaitstud, samas paketis ilma juurdepääsu piiritlejata)
51
![Page 52: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/52.jpg)
Klassikaline näide loomade häältega
https://en.wikipedia.org/wiki/Bark_(sound)52
public class Koer {
String nimi;
Koer(String nimi) {
this.nimi = nimi;
}
void haugu(){
}
}
![Page 53: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/53.jpg)
53
public class EestiKoer extends Koer {
EestiKoer(String nimi) {
super(nimi);
}
void haugu(){
System.out.println("Auh, auh!");
}
}
public class LätiKoer extends Koer{
LätiKoer(String nimi) {
super(nimi);
}
void haugu(){
System.out.println("Vau, vau!");
}
}
![Page 54: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/54.jpg)
54
public class EestiKoer extends Koer {
EestiKoer(String nimi) {
super(nimi);
}
void haugu(){
System.out.println("Auh, auh!");
}
}
public class LätiKoer extends Koer{
LätiKoer(String nimi) {
super(nimi);
}
void haugu(){
System.out.println("Vau, vau!");
}
}
public class VeneKoer extends Koer {
VeneKoer(String nimi) {
super(nimi);
}
void haugu(){
System.out.println("Gav, gav!");
}
}
![Page 55: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/55.jpg)
55
public class EestiKoer extends Koer {
EestiKoer(String nimi) {
super(nimi);
}
void haugu(){
System.out.println("Auh, auh!");
}
}
public class LätiKoer extends Koer{
LätiKoer(String nimi) {
super(nimi);
}
void haugu(){
System.out.println("Vau, vau!");
}
}
public class VeneKoer extends Koer {
VeneKoer(String nimi) {
super(nimi);
}
void haugu(){
System.out.println("Gav, gav!");
}
}
public class SoomeKoer extends Koer {
SoomeKoer(String nimi) {
super(nimi);
}
void haugu(){
System.out.println("Vuh, vuh!");
}
}
![Page 56: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/56.jpg)
56
public class EestiKoer extends Koer {
EestiKoer(String nimi) {
super(nimi);
}
void haugu(){
System.out.println("Auh, auh!");
}
}
public class LätiKoer extends Koer{
LätiKoer(String nimi) {
super(nimi);
}
void haugu(){
System.out.println("Vau, vau!");
}
}
public class VeneKoer extends Koer {
VeneKoer(String nimi) {
super(nimi);
}
void haugu(){
System.out.println("Gav, gav!");
}
}
public class SoomeKoer extends Koer {
SoomeKoer(String nimi) {
super(nimi);
}
void haugu(){
System.out.println("Vuh, vuh!");
}
}
public class KoreaKoer extends Koer{
KoreaKoer(String nimi) {
super(nimi);
}
void haugu(){
System.out.println("Meong, Meong!");
}
}
![Page 57: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/57.jpg)
57
public class KoerteTest {
public static void main(String[] args){
Koer k1 = new VeneKoer("Šarik");
Koer k2 = new LätiKoer("Reksis");
Koer k3 = new SoomeKoer("Musti");
Koer k4 = new KoreaKoer("");
Koer k5 = new EestiKoer("Muri");
Koer[] koerad = {k1, k2, k3, k4, k5};
for (Koer k : koerad){
k.haugu();
}
}
} Gav, gav!Vau, vau!Vuh, vuh!Meong, Meong!Auh, auh!
![Page 58: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/58.jpg)
58
public class SuurEestiKoer extends EestiKoer {
SuurEestiKoer(String nimi) {
super(nimi);
}
}
Koer k6 = new SuurEestiKoer("Muki");
k6.haugu();
Auh, auh!
On Koer On EestiKoer
![Page 59: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/59.jpg)
Object
Kui ülemklassi pole märgitud, siis on selleks klass Object
– equals(Object obj)
– getClass()
– toString()
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html
59
![Page 60: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/60.jpg)
Milline variant meetodist ikkagi rakendub?
• Võtame pikema ahela
• Object
– Isik
• Tudeng
– Magistrant
• meetod toString(), mis on juba klassis Object olemas
60
![Page 61: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/61.jpg)
61
public class Isik extends Object {
public String toString(){
return "Isik";
}
}
public class Tudeng extends Isik {
public String toString(){
return "Tudeng";
}
}
public class Magistrant extends Tudeng {
}
![Page 62: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/62.jpg)
62
Mida väljastab järgmine programmilõik?
public class TestPol{
public static void main(String[] args) {
m(new Object());
}
public static void m(Object x){
System.out.println(x.toString());
}
}
1. Magistrant
2. Tudeng
3. Isik
4. java.lang.Object@13f5d07 vms.
5. mitte midagi
6. midagi muud
7. veateate
![Page 63: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/63.jpg)
63
Mida väljastab järgmine programmilõik?
public class TestPol{
public static void main(String[] args) {
m(new Isik());
}
public static void m(Object x){
System.out.println(x.toString());
}
}
1. Magistrant
2. Tudeng
3. Isik
4. java.lang.Object@13f5d07 vms.
5. mitte midagi
6. midagi muud
7. veateate
![Page 64: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/64.jpg)
64
Mida väljastab järgmine programmilõik?
public class TestPol {
public static void main(String[] args) {
m(new Tudeng());
}
public static void m(Object x){
System.out.println(x.toString());
}
}
1. Magistrant
2. Tudeng
3. Isik
4. java.lang.Object@13f5d07 vms.
5. mitte midagi
6. midagi muud
7. veateate
![Page 65: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/65.jpg)
65
Mida väljastab järgmine programmilõik?
public class TestPol {
public static void main(String[] args) {
m(new Magistrant());
}
public static void m(Object x){
System.out.println(x.toString());
}
}
1. Magistrant
2. Tudeng
3. Isik
4. java.lang.Object@13f5d07 vms.
5. mitte midagi
6. midagi muud
7. veateate
![Page 66: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/66.jpg)
66
public class Isik extends Object {
public String toString(){
return "Isik";
}
}
public class Tudeng extends Isik {
public String toString(){
return "Tudeng";
}
}
public class Magistrant extends Tudeng {
}
Isik ObjectTudengMagistrant
![Page 67: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/67.jpg)
Dünaamiline seostamine, hiline seostamine
• ingl. k. dynamic method dispatch, late binding
• See, millise meetodi poole täpselt pöördutakse, otsustataksemitte kompileerimise, vaid programmi täitmise käigus– Ülekatte puhul just nii tehaksegi
• Olgu klass K1 klassi K2 alamklass, klass K2 klassi K3 alamklass, …, Kn-1 klassi Kn alamklass
• Kui o on klassi K1 isend, siis on ta ju ka K2 ,…, Kn isend
• Vastavat meetodit hakatakse otsima alates K1 ja kui leitakse, siis rakendatakse
67
Kn-1 KnK2K1
java.lang.Object
![Page 68: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/68.jpg)
Polümorfism
• Eesti keeles muidu: Mitmekujulisus
• Erinevaid käsitlusi
• On siis, kui ühte ja sama tegevust saab mitut erinevat moodi teha, näiteks kui koer haugub, siis eesti koer haugub „Auh-auh“ ning vene koer haugub „Gav-gav“
68
![Page 69: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/69.jpg)
Niisiis• Alamklass saadakse ülemklassist spetsialiseerimise
teel– uusi välju– uusi meetodeid– ülekate (meetodid teistmoodi)
• Minimaalse dubleerimise saavutamiseks tuleks objekti omadus realiseerida kõrgeimal võimalikul üldistustasemel
• Kui ülemklass nii üldine, et ei saa üldse meetodi sisu kirjutada– abstraktne meetod, abstraktne klass
• Javas võimalik ainult üks vahetu ülemklass– abiks on liides
69
![Page 70: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/70.jpg)
final
Paljud meile tuttavad klassid (nt String, Math) on varustatud piiritlejaga final, mis tähendab, et neile ei saa alamklasse koostada
70
![Page 71: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/71.jpg)
71
Kuidas nimetatakse olukorda, kus klassi kuulub mitu sama nimega, kuid erineva signatuuriga
meetodit või mitu konstruktorit?
1. ülekate
2. üledefineerimine
3. dünaamiline seostamine
4. kuidagi teisiti
![Page 72: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/72.jpg)
72
Kuidas nimetatakse olukorda, kus klassis kirjeldatud ja päriluse teel saadud meetodil
on üks ja sama signatuur?
1. ülekate
2. üledefineerimine
3. dünaamiline seostamine
4. kuidagi teisiti
![Page 73: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/73.jpg)
class Isik {
private String nimi;
private double vanus;
Isik(String isikuNimi, double isikuVanus) {
nimi = isikuNimi;
vanus = isikuVanus;
}
Isik() {
nimi = "Nimetu";
vanus = 0.0;
}
public String vabaaeg(){
if (vanus > 25 && vanus < 65)
return "ei ole";
return "on küll";
}
public String vabaaeg(String aastaaeg){
if (aastaaeg.equals("suvi"))
return "on küll";
return this.vabaaeg();
}
}
Üledefineerimine
Üledefineerimine
vabaaeg()vabaaeg(String)
Isik(String, double)Isik()
![Page 74: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/74.jpg)
class Isik {private String nimi;private double vanus;
Isik(String isikuNimi, double isikuVanus) {
nimi = isikuNimi;vanus = isikuVanus;
}Isik() {
nimi = "Nimetu";vanus = 0.0;
}
public String vabaaeg(){if (vanus > 25 && vanus < 65)
return "ei ole";return "on küll";
}public String vabaaeg(String
aastaaeg){if (aastaaeg.equals("suvi"))
return "on küll";return this.vabaaeg();
}}
Ülekatmine
Isik vabaaeg()Tudeng vabaaeg()
class Tudeng extends Isik {
Tudeng(String isikuNimi, double isikuVanus) {
super(isikuNimi, isikuVanus);}
@Overridepublic String vabaaeg() {
return "Olen ju tudeng.Alati leian!";
}}
![Page 75: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/75.jpg)
Loengu tempo oli
1. liiga kiire
2. paras
3. liiga aeglane
75
![Page 76: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/76.jpg)
Materjal tundus
1. liiga lihtne
2. parajalt jõukohane
3. liiga keeruline
76
![Page 77: Objektorienteeritud programmeerimine · 2020. 3. 10. · Möödunud nädalal •Loeng –List. Liides •Lisapraktikum •Praktikum –Sõnetöötlus. Tekstiline I/O. Listid •Delta](https://reader036.vdocuments.pub/reader036/viewer/2022071500/611f706f410f575b685e00cb/html5/thumbnails/77.jpg)
Suur tänu osalemast ja kohtumiseni!
77