Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Polymorphism in Java Introduction What is Polymorphism? Example code Why should we use it? How important is it? Resources [email protected] Polymorphism in Java What is Polymorphism? Poly means many – as in polyphonic, polyester, polygon... Morph means shape or form – as in anthropomorphic, the plasticine animation character named Morph, metamorphosis... So a polymorph has many shapes or forms. In a Java object, a method name may exist as several different versions. [email protected] Shape.java, the superclass... // Base class with // a single method. public class Shape This class sets up a template for a couple more classes we will define next. Note that the one method defined here is pretty useless. It will be overridden by the two subclasses on the following slides. { public double getArea() { // generic Shape has no useful "area" to report return 0.0; } } // end of Shape Circle.java, a subclass of Shape // Subclass of Shape that implements a getArea method public class Circle extends Shape { double dRadius; public Circle(double r) This class replaces everything that was in Shape – so why inherit from Shape? { dRadius = r; } public double getArea() { double dArea = dRadius*dRadius*Math.PI; return dArea; } } // end of Circle // pi*r-squared Square.java has two constructors public class Square extends Shape { double dSide; public Square(double s) { dSide = s; } This class replaces everything that was in Shape – so why inherit from Shape? public Square() { dSide = 1.0; // default value for the size of the square. } public double getArea() { double dArea = dSide*dSide;// side-squared return dArea; } } // end of Square Code from the Polymorfik demo public static void main(String[] args) { // We can assign a subclass to a variable with the "wrong" type only // if that "wrong" type is a superclass type Shape shape1 = new Shape(); // variable and instance: same type Shape shape2 = new Circle(1.0); // instance is a subclass Shape shape3 = new Square(2.0); // instance is a different subclass System.out.println("Shape One has area: " + shape1.getArea()); System.out.println("Shape Two has area: " + shape2.getArea()); System.out.println("Shape Three has area: " + shape3.getArea()); } Polymorphism in Java How does the code work? When we print the area of each Shape, will we run the getArea() method defined in Shape? Or will we use the newer versions in Circle and Square? Which way makes more sense and is more useful? Which is simplest for Java to do? What about the multiple constructors in Square? [email protected] Polymorphism in Java Why should we use it? Overloaded methods (polymorphic methods) give us different styles of using functionality. Our Square example allows us to have a useful “default” constructor, for example. Runtime polymorphism (where subclassed objects share a method name but have specialised functionality) provides coders with a simpler yet consistent logical model of slightly different customised objects. [email protected] Polymorphism in Java How important is it? Polymorphism is essential to our use of inherited code. Without polymorphic capabilities, it would be very hard to use high-level abstractions (like getArea() for example). Polymorphism is the basis of GUI toolkits, Java Beans and just about any other set of reusable, structured tools. And best of all, it's not complicated for the coder! [email protected] Polymorphism in Java Online Tutorials The Essence of OOP Using Java, Polymorphism Based on Overloaded Methods By Richard G. Baldwin http://www.developer.com/java/article.php/966001 The Essence of OOP using Java, Runtime Polymorphism through Inheritance By Richard G. Baldwin http://www.developer.com/java/article.php/983081 [email protected]