java:dynamic_polymorphism_example

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Παράδειγμα δυναμικού πολυμορφισμού σε μία ιεραρχία 3 κληρονομούμενων κλάσεων ====== Ας υποθέσουμε ότι έχετε την ιεραρχία των κλάσεων <code> Bycicle | |---------> MountainBike | |-----------> RacingMountainBike </code> Οι 3 κλάσεις δίνονται με την σειρά παρακάτω <code java Bicycle.java> 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; } } </code> <code java MountainBike.java> 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; } } </code> <code java RacingMountainBike.java> 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; } } </code> <WRAP important 80% center round> Στο παρακάτω παράδειγμα παρατηρήστε πως ο δυναμικός πολυμορφισμός λειτουργεί ανάμεσα σε κλάσεις που ανήκουν στην ίδια ιεραρχία. </WRAP> <code java PolymorphismExample.java> 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); } } </code> |Προηγούμενο: [[ :java:polymorphism | Στατικός και Δυναμικός Πολυμορφισμός ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[ java:abstract_classes | Abstract_classes ]]|

java/dynamic_polymorphism_example.1487253678.txt.gz · Last modified: 2017/02/16 14:01 by gthanos