Professional Documents
Culture Documents
Κληρονομικότητα
Κληρονομικότητα
Ππόλογορ
Animal
Pet WildAnimal
Dog Lion
Class Animal
package lesson_09;
// Constructor
public Animal(String eidos, int podia, int varos) {
this.eidos = eidos;
this.podia = podia;
this.varos = varos;
// Getters
public String getEidos() { return eidos; }
public int getPodia() { return podia; }
public int getVaros() { return varos; }
// Setters
public void setVaros(int varos) { this.varos = varos; }
// Other methods
public void makeSound() { System.out.println("Animal Sound"); }
Class Pet
package lesson_09;
// Constructor
public Pet(String eidos, int podia, int varos, String name) {
super(eidos,podia,varos);
this.name = name;
}
// Getters
public String getName() { return name; }
Class Dog
package lesson_09;
// Constructor
public Dog(String eidos, int podia, int varos, String name, int tailSize) {
super(eidos,podia,varos,name);
this.tailSize = tailSize;
}
// Getter
// Override
public void makeSound() { System.out.println("Bark Bark"); }
}
Class WildAnimal
package lesson_09;
// Constructor
public WildAnimal(String eidos, int podia, int varos, String location) {
super(eidos,podia,varos);
this.location = location;
// Getters
public String getLocation() { return location; }
Class Lion
package lesson_09;
public Lion(String eidos, int podia, int varos, String location, int fylo) {
super(eidos,podia,varos,location);
this.fylo = fylo;
// Getters
public int getFylo() { return fylo; }
// Other methods
public void makeSound() { System.out.println("Roaaaarrrr"); }
public void eatACow(int cowWeight) { varos += cowWeight/10; }
Animal, ζηελ νπνία έρεη νξηζηεί ήδε ε ζπγθεθξηκέλε αλάζεζε ηηκώλ. Η κόλε
δηαθνξνπνίεζε (επέθηαζε) ζηελ ππό-θιάζε Pet, είλαη ε εληνιή this.name =
name; , ε νπνία θάλεη αλάζεζε ηνπ νλόκαηνο ηνπ θαηνηθηδίνπ.
Οη παξαπάλσ θαλόλεο εθαξκόδνληαη αλαδξνκηθά ζε έλα δέληξν ηεξαξρίαο
θιάζεσλ, γηα θάζε ζρέζε ππέξ-θιάζεο – ππό-θιάζεο κεηαμύ δύν θιάζεσλ.
Παπάδειγμα
package lesson_09;
// Γεκηνπξγία αληηθεηκέλσλ
WildAnimal a = new WildAnimal("Amfibio",4,2,"Europe");
Pet b = new Pet("Ptino",4,1,"Tweety");
Dog d = new Dog("Kynoeides",4,7,"Robby",1);
Lion l = new Lion("Ailouroeides",4,70,"Africa",Lion.M);
// Φξήζε κεζόδσλ
a.makeSound();
b.makeSound();
d.makeSound();
l.makeSound();
System.out.println(d.getName());
l.eatACow(100);
System.out.println(l.getVaros());
Γηα ηελ θαηαλλόεζε ηνπ παξαπάλσ παξαδείγκαηνο, έρνπκε ηνλ παξαθάησ πίλαθα.
Ενηολή Επεξήγηζη
Η έλλνηα ηεο αθεξεκέλεο θιάζεο είλαη ε εμήο: κηα αθεξεκέλε θιάζε ρξεζηκνπνηείηαη
ΜΟΝΟ γηα λα θιεξνλνκεζεί θαη δελ κπνξνύλ λα δεκηνπξγεζνύλ αληηθείκελά ηεο. Η
δήισζε κίαο αθεξεκέλεο θιάζεο, γηα παξάδεηγκα ηεο θιάζεο Animal, απνζθνπεί
ζην εμήο: γλσξίδνπκε όηη ζην πξόγξακκά καο δελ ζα δεκηνπξγήζνπκε θαλέλα
αληηθείκελν ηεο θιάζεο απηήο θαη ζα ρξεζηκνπνηήζνπκε ηα ζηνηρεία ηεο κόλν γηα
θιεξνλνκηθόηεηα. Παξά ην γεγνλόο απηό όκσο, κπνξνύκε λα νξίζνπκε κεηαβιεηέο
(αλαθνξέο) ηεο αθεξεκέλεο θιάζεο, ρσξίο όκσο λα κπνξνύκε λα
ρξεζηκνπνηήζνπκε ηνλ ηειεζηή new γηα απηή. Φξήζε ηνπ ηειεζηή new γηα ηελ
δεκηνπξγία αληηθεηκέλνπ κηαο αθεξεκέλεο θιάζεο, δεκηνπξγεί πξόβιεκα θαηά ηελ
κεηαγιώηηηζε ηνπ πξνγξάκκαηνο.
int x;
double d = 5.2;
θαη γξάςνπκε:
x = (int) d;
2. Αλέβαζκα πξνο ηα πάλσ. Έζησ όηη έρνπκε κία αλαθνξά a ηύπνπ Α θαη κία
αλαθνξά b ηύπνπ Β. Έζησ όηη ε θιάζε Β είλαη ππό-θιάζε ηεο Α. Τόηε
κπνξνύκε λα γξάςνπκε a = b. Η κεηαβιεηή a έρεη πξόζβαζε ΜΟΝΟ ζηα
θνηλά ζηνηρεία ηεο κε ηελ κεηαβιεηή b. Ο θαλόλαο απηόο δηθαηνινγεί θαη ην όηη
θάζε αληηθείκελν ζηελ Java, κπνξεί λα αλαθεξζεί από κία αλαθνξά ηύπνπ
Object, αθνύ ζηελ ηεξαξρία θιάζεσλ, ζηελ θνξπθή βξίζθεηαη ε θιάζε Object.
3. Καηέβαζκα πξνο ηα θάησ. Τν θαηέβαζκα πξνο ηα θάησ δελ είλαη δπλαηό. Γηα
λα ζπκβεί, ζα πξέπεη ε αλαθνξά a ηεο θιάζεο Α ηνπ πξνεγνύκελνπ
παξαδείγκαηνο λα δείρλεη ήδε ζε αληηθείκελν ηεο θιάζεο Β (ή αληηθείκελν
θάπνηαο ππό-θιάζεο ηεο θιάζεο Β). Τόηε θαη κόλνλ ηόηε, κπνξνύκε λα
γξάςνπκε b = (B) a.
// Έλα αληηθείκελν κπνξεί πάληνηε λα αλαθεξζεί από κηα κεηαβιεηή ηύπνπ Object
Object o = d;
// Φπζηθά ην αληηθείκελν κπνξεί λα μαλαγίλεη αληηθείκελν ηνπ πξνεγνύκελνπ ηύπνπ
d = (Dog) o;
Interface Bicycle
Class MountainBicycle
Παπαηηπήζειρ
Η ππό-θιάζε ελόο interface ζα πξέπεη λα πινπνηεί ΟΛΔΣ ηηο δεισκέλεο
κεζόδνπο ηνπ interface.
Οη κέζνδνη ηνπ interface δελ ζα πξέπεη λα έρνπλ ζώκα.
Γελ κπνξεί λα νξηζζεί έλα αληηθείκελν ηύπνπ interface.
Μπνξεί λα δεισζεί κεηαβιεηή ηύπνπ interface, ε νπνία όκσο ζα αλαθέξεηαη
ζε αληηθείκελα ππό-θιάζεσλ πνπ έρνπλ δεκηνπξγεζεί.
Μία ππό-θιάζε κπνξεί λα θιεξνλνκεί πεξηζζόηεξα ηνπ ελόο interfaces.
Ο ηειεζηήο instanceof ειέγρεη εάλ έλα αληηθείκελν απνηειεί αλήθεη ζε κία θιάζε ή
όρη. Ο ηειεζηήο instanceof έρεη ηελ εμήο ζύληαμή:
Παπάδειγμα 1
¨Δζησ ηα αληηθείκελα
Παπάδειγμα
ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΕΑΠ 2007/2008 – ΘΕΜΑ 4, Ερώτημα 2
Καη ν θώδηθαο
class InstanceofDemo {
public static void main(String[] args) {
Parent obj1 = new Parent();
Parent obj2 = new Child();
System.out.println("obj1 instanceof Parent: " +
(obj1 instanceof Parent));
System.out.println("obj1 instanceof Child: " +
(obj1 instanceof Child));
System.out.println("obj1 instanceof MyInterface: " +
(obj1 instanceof MyInterface));
System.out.println("obj2 instanceof Parent: " +
(obj2 instanceof Parent));
System.out.println("obj2 instanceof Child: " +
(obj2 instanceof Child));
System.out.println("obj2 instanceof MyInterface: " +
(obj2 instanceof MyInterface));
}
Λύζη
Λύζη
Class Game
this.price = price;
Class Tetris
public Tetris() {
super(7);
}
if (super.playGame(cash) == false) {
return false;
} else {
System.out.println("Let’s play TETRIS!");
return true;
}
Class Billiard
public Billiard() {
super(15);
}
if (super.playGame(cash) == false) {
return false;
} else {
System.out.println("Let’s play BILLIARD!");
return true;
}
Class Shop
import java.util.Random;
public Shop() {
int count = 0;
for (int i = 0; i < games.length; i++) {
if (games[i] instanceof Tetris)
count++;
}
return count;
int count = 0;
for (int i = 0; i < games.length; i++) {
if (games[i] instanceof Billiard)
count++;
}
return count;
games[index].playGame(cash);
return true;
Class Main
shop.playGame(15, 10);
shop.playGame(20, 20);