6. Abstraktas klases un saskarnes
Pārskatiet prezentāciju Abstraktas klases un saskarnes
Uzdevumi
- Izveidojiet klasi Human
- Izveidojiet klasi Martian
- Implementējiet Martian un Human klašu metodes
- Papildu informācija
Izveidojiet klasi Human
Izpētiet pakotni jtm.activity06 un izveidojiet Human klasi, kas ievieš Humanoid saskarni:
- Ar peles labo pogu noklikšķiniet uz pakotnes main.java.jtm.activity06 un atlasiet New — Class
- Ievadiet class name: Human
- Spiediet Add.. un main.java.jtm.activity06 pakotnē atlasiet Humanoid.
- Sadaļā Which method stubs would you like to create? atlasiet Inherited abstract methods
- Spiediet Finish
Izveidojiet klasi Martian
Izveidojiet Martian klasi, kas implementē Humanoid, Alien un Cloneable saskarnes:
- Ar peles labo pogu noklikšķiniet uz pakotnes main.java.jtm.activity06 un atlasiet New — Class.
- Ievadiet class name: Martian
- Sadaļā interfaces spiediet Add.. un atlasiet:
- Humanoid no main.java.jtm.activity06 pakotnes,
- Alien no main.java.jtm.activity06 pakotnes,
- Cloneable no java.lang pakotnes.
- Sadaļā Which method stubs would you like to create? atlasiet Inherited abstract methods
- Spiediet Pabeigt
Implementējiet Martian un Human klašu metodes
Implementējiet metodes atbilstoši prasītajam, kas aprakstīta saskarnes definīcijās un vienību testu pārbaudēs.
Piezīmes:
- Kad Humanoid ir izsalcis, tas ēd un pieņemas svarā. Ja Alien ēd Humanoid, tas to nogalina.
- Implementējot Humanoid eat(), ir jāpieņem Integer, bet Alien eat() jāpieņem Object.
- Kad Humanoid vemj, tas zaudē apēstā svaru.
- Human vomit() tikai Integer, bet Alien var izvemt jebkuru Objektu.
Ja clone() tiek izsaukts Martian, tā struktūra ir jāklonē rekursīvi visu "vēderu" saturam. To var izdarīt, ieviešot iekšējo metodi clone(Object), piemēram:
/*
* Implementation of Object clone() method for Cloneable interface
* @see https://docs.oracle.com/javase/7/docs/api/java/lang/Cloneable.html
*/
@Override
public Object clone() throws CloneNotSupportedException {
return clone(this);
}
private Object clone(Object current) {
// TODO implement cloning of current object
// and its stomach
}Implementējiet toString() metodi Human un Martian klasēm šādā formātā:
@Override
public String toString() {
return "ClassName: " + weight + " [" + stomach + "]";
}kur ClassName ir Human cilvēkam, un Martian marsietim.
Piemēram, ja pašreizējais objekts ir marsietis un tā "vēderā" ir cits marsietis un pēc tam cilvēks ar 3 vēderā, tam ir jāparāda:[Martian: 3 [Martian: 4 [Human: 5 [3]]]