Polymorphism Legal assignments class Test public static void main String args double d int i d 5 legal i 3 5 illegal i int 3 5 legal Widening is legal Narrowing is illegal unless you cast Legal method calls class Test public static void main String args myPrint 5 static void myPrint double d System out println d 5 0 Legal because parameter transmission is equivalent to assignment myPrint 5 is like double d 5 System out println d Illegal method calls class Test public static void main String args myPrint 5 0 static void myPrint int i System out println i myPrint int in Test cannot be applied to double Illegal because parameter transmission is equivalent to assignment myPrint 5 0 is like int i 5 0 System out println i Overloading class Test public static void main String args myPrint 5 myPrint 5 0 static void myPrint int i System out println int i i static void myPrint double d System out println double d d int i 5 double d 5 0 Why overload a method Sometimes so you can supply defaults for the parameters int increment return increment 1 Sometimes so you can supply additional information int printResult String message System out println message printResult Polymorphism Polymorphism means many poly shapes morph In Java polymorphism refers to the fact that you can have multiple methods with the same name in the same class There are two kinds of polymorphism Overloading which you have just seen Two or more methods with different signatures Overriding which you will see shortly Replacing an inherited method with another having the same signature Signatures In any programming language a signature is what distinguishes one function or method from another In C every function has to have a different name In Java two methods have to differ in their names or in the number or types of their parameters foo int i and foo int i int j are different foo int i and foo int k are the same foo int i double d and foo double d int i are different In C the signature also includes the return type But not in Java Shadowing class Animal String name Animal public static void main String args Animal animal new Animal Dog dog new Dog System out println animal name dog name public class Dog extends Animal String name Dog Animal Dog This is called shadowing name in class Dog shadows name in class Animal Overriding class Animal public static void main String args This is called Animal animal new Animal Dog dog new Dog overriding a animal print method dog print Method print in static void print Dog overrides System out println Superclass Animal method print in Animal public class Dog extends Animal static void print System out println Subclass Dog Superclass Animal Subclass Dog How to override a method Create a method in a subclass having the same name and the same number and types of parameters Parameter names don t matter The return type must be the same The overriding method cannot be more private than the method it overrides Why override a method Dog dog new dog System out println dog Prints something like Dog feda4c00 Add to class Dog the following public String toString return name Now System out println dog prints something like Fido The End
View Full Document
Unlocking...