====== Παράδειγμα δυναμικού πολυμορφισμού σε μία ιεραρχία 3 κληρονομούμενων κλάσεων ======
Ας υποθέσουμε ότι έχετε την ιεραρχία των κλάσεων
Bycicle
|
|---------> MountainBike
|
|-----------> RacingMountainBike
Οι 3 κλάσεις δίνονται με την σειρά παρακάτω
public class Bicycle {
public int cadence;
public int gear;
public int speed;
public Bicycle(int startCadence, int startSpeed, int startGear) {
gear = startGear;
cadence = startCadence;
speed = startSpeed;
}
public Bicycle() {
gear = 0;
cadence = 0;
speed = 0;
}
public int getCadence() {
return cadence;
}
public int getGear() {
return gear;
}
public int getSpeed() {
return speed;
}
public void setCadence(int newValue) {
cadence = newValue;
}
public void setGear(int newValue) {
gear = newValue;
}
public void applyBrake(int decrement) {
speed -= decrement;
}
public void speedUp(int increment) {
speed += increment;
}
@Override
public String toString() {
return "cadence: "+ cadence+", gear: "+gear+", speed: "+speed;
}
}
public class MountainBike extends Bicycle {
private int seatHeight;
// the MountainBike subclass has
// one constructor
public MountainBike(int startHeight, int startCadence,
int startSpeed, int startGear) {
//super(startCadence, startSpeed, startGear);
super(startCadence, startSpeed, startGear);
seatHeight = startHeight;
}
// the MountainBike subclass has
// one method
public void setHeight(int newValue) {
seatHeight = newValue;
}
public int getSeatHeight() {
return seatHeight;
}
public String toString() {
return super.toString() + ", seatHeight: " + seatHeight;
}
}
public class RacingMountainBike extends MountainBike {
int racingNumber;
public RacingMountainBike(int startHeight, int startCadence,
int startSpeed, int startGear, int num) {
super(startHeight, startCadence, startSpeed, startGear);
racingNumber = num;
}
public String toString() {
return super.toString() + ", racing number: "+ racingNumber;
}
}
Στο παρακάτω παράδειγμα παρατηρήστε πως ο δυναμικός πολυμορφισμός λειτουργεί ανάμεσα σε κλάσεις που ανήκουν στην ίδια ιεραρχία.
public class PolymorphismExample {
public static void main(String args[]) {
MountainBike bike = new MountainBike(10,20,30,40);
Bicycle bicycle = bike;
System.out.println(bicycle);
System.out.println("------");
System.out.println(bike);
bicycle = new Bicycle(15,25,35);
//bicycle = new MountainBike(15,25,35,45);
if( bicycle instanceof MountainBike )
bike = (MountainBike) bicycle;
System.out.println("------");
System.out.println(bike);
System.out.println("------");
RacingMountainBike rbike = new RacingMountainBike(10, 20, 30, 40, 100);
bicycle = rbike;
System.out.println(bicycle);
}
}
|Προηγούμενο: [[ :java:polymorphism | Στατικός και Δυναμικός Πολυμορφισμός ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[ java:abstract_classes | Abstract κλάσεις ]]|