Polymorphism Jan 14 2019 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 2 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 3 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 4 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 same name different parameters System out println double d d int i 5 double d 5 0 5 Why overload a method Sometimes so you can supply defaults for the parameters int increment return increment 1 Notice that one method can call another of the same name Sometimes so you can supply additional information void printResult String message System out println message printResult 6 Multiple constructors You can overload constructors as well as methods Counter count 0 Counter int start count start One constructor can call another constructor in the same class but there are special rules You call the other constructor with the keyword this The call must be the very first thing the constructor does Point int x int y this x x this y y sum x y Point this 0 0 System out println At origin A common reason for overloading constructors is as above to provide default values for missing parameters 7 Superclass construction The very first thing any constructor does automatically is call the default constructor for its superclass class Foo extends Bar Foo constructor super invisible call to superclass constructor You can replace this with a call to a specific superclass constructor Use the keyword super This must be the very first thing the constructor does class Foo extends Bar Foo String name constructor super name 5 explicit call to superclass constructor 8 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 9 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 10 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 11 Overriding class Animal public static void main String args Animal animal new Animal Dog dog new Dog animal print dog print void print System out println Superclass Animal This is called overriding a method Method print in Dog overrides method print in Animal public class Dog extends Animal void print System out println Subclass Dog Superclass Animal Subclass Dog 12 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 13 Why override a method Dog dog new Dog System out println dog Prints something like Dog feda4c00 The println method calls the toString method which is defined in the Object class Hence every object can be printed though it might not look pretty The method public String toString may be overridden If you add to class Dog the following public String toString return name Then System out println dog will print the dog s name which may be something like Fido 14 The End 15
View Full Document
Unlocking...