Your SlideShare is downloading. ×
Object-Oriented Polymorphism Unleashed
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Object-Oriented Polymorphism Unleashed


Published on

Object-Oriented Programming with special emphasis on Polymorphism

Object-Oriented Programming with special emphasis on Polymorphism

Published in: Technology

  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. OO Polymorphism Unleashed Naresh Chintalcheru Lecturer - School of Information Technology at Illinois State University (ISU)
  • 2. Polymorphism ● Polymorphism is the difficult concept to understand in Object Oriented Programming (OOP) ● Nature of support provided by the Programming Languages make it more difficult
  • 3. Programming language support ● Java supports polymorphism with Inheritance and Interfaces. ● Java also supports restricted polymorphism with "final" modifier so that methods cannot be overridden ● C++ supports multiple inheritance and operator overloading, which Java does not
  • 4. OOP Quick OOP review before we dig deeper into Polymorphism
  • 5. Object Oriented Programming OOP .... ● Represents concepts as "objects" that have data fields and methods ● Data fields and actions/methods are closely associated with object ● Objects are mapped to real world entities ● Collection of interacting objects as opposed to list of tasks
  • 6. Object Oriented Programming OOP .... ● Objects has distinct role and responsibility ● Encourages data hiding ● Objects are capable of receiving messages, processing data and sending messages to other objects ● Programing construct that combines data with set of methods for accessing and modifying data
  • 7. OOP Concepts OOP concepts .... ● Encapsulation ● Abstraction ● Inheritance ● Polymorphism
  • 8. Encapsulation ● Encapsulation Binds together data and methods, which act on the data. Enforces modularity and hides complexity by restricting access to Accessors and Mutators ● Accessor Accessor is a method which asks an object about itself (The get and other public methods) ● Mutator Mutator is a method that modifies the state of an object (The set and other public methods)
  • 9. Abstraction and Inheritance ● Abstraction Presents simple concept or entity to the external world and hides implementation details ● Inheritance Allow object data and methods pass down the knowledge to the hierarchy of inherited objects
  • 10. Polymorphism Polymorphism
  • 11. Polymorphism Polymorphism The Word Polymorphism comes from Greek means "several different forms"
  • 12. Polymorphism Polymorphism Objects can take many shapes or forms
  • 13. Polymorphism Polymorphism Enables "Programming in General" rather than "Programming in Specific"
  • 14. Polymorphism Polymorphism Example
  • 15. Polymorphism Java supports Polymorphism with Inheritance & Interfaces
  • 16. Polymorphism Two different object types ArrayList & LinkedList
  • 17. Polymorphism In polymorphism you treat both ArrayList & LinkedList as the same type
  • 18. Polymorphism ArrayList & LinkedList inherit from List Interface
  • 19. Polymorphism List | _________________ | | ArrayList LinkedList
  • 20. Polymorphism List (Generalized) | _________________ | | ArrayList LinkedList (Specialized)
  • 21. Polymorphism Polymorphism treats two types ArrayList & LinkedList as one type List
  • 22. Polymorphism Polymorphism Employee Self Service web application example Employee Types ● Salaried ● Hourly
  • 23. Polymorphism List list; public void addToList(String msg) { list.add(msg); //Generalized } public void setList() { list = new ArrayList() //list = new LinkedList() }
  • 24. Polymorphism Polymorphism in java implemented using Overloading and Overriding and Parametric
  • 25. Polymorphism Overloading Compile time polymorphism Overriding Runtime time polymorphism Parametric Runtime time polymorphism
  • 26. Polymorphism Overloading ● Two or more methods with same name but different method signature (differ by number or type of method parameters) in the same scope ● Can have different method return types ● Can occur either in the same class or subclass
  • 27. Polymorphism Overriding ● Different implementation of same method in the inherited classes ● Must have same method name, signature and return type. ● Appears in subclass
  • 28. Polymorphism Overriding ● Access modifiers of the overriding method may not be more restrictive ○ If the superclass method is public then the overriding method must be public ○ If the superclass method is protected then the overriding method may be protected or public ○ If the superclass method is default, the overriding method may be default, protected, or public ○ If the superclass methods is private, it is not inherited and overriding is not possible
  • 29. Polymorphism Parametric ● Using Generic Type (Jdk1.5) which allows Collections to hold any type of object in runtime without any change in code ● This is achieved by passing actual Type as parameter
  • 30. Polymorphism Parametric interface sideCache { public void put(K key, V value); public V get(K key); }
  • 31. Polymorphism Life without Polymorphism
  • 32. Polymorphism Life without Polymorphism ● Without polymorphism the code quantity and complexity grows. ● The results of polymorphism can be achieved using alternative ways
  • 33. Polymorphism Alternative Ways to achieve Polymorphism ● instanceof and downcasting ● Java Reflections
  • 34. Alternative to Polymorphism class Animal { } class Dog extends Animal { public void woof() { System.out.println("Woof!"); } } class Cat extends Animal { public void meow() { System.out.println("Meow!"); } } class Tiger extends Animal { public void roar() { System.out.println("Roar!"); } }
  • 35. Alternative to Polymorphism class AlternativePolymorphismExample { public static void main(String[] args) { makeItTalk(new Cat()); makeItTalk(new Dog()); makeItTalk(new Hippopotamus()); } public static void makeItTalk(Animal animal) { if (animal instanceof Cat) { Cat cat = (Cat) animal; cat.meow(); } else if (animal instanceof Dog) { Dog dog = (Dog) animal; dog.woof(); } else if (animal instanceof Tiger) { Tiger tiger = (Tiger) animal; tiger(); } } }
  • 36. Polymorphism Example Using Polymorphism
  • 37. Using Polymorphism abstract class Animal { public abstract void talk(); } class Dog extends Animal { public void talk() { System.out.println("Woof!"); } } class Cat extends Animal { public void talk() { System.out.println("Meow!"); } } class Tiger extends Animal { public void talk() { System.out.println("Roar!"); } }
  • 38. Using Polymorphism class PolymorphismExample { public static void main(String[] args) { makeItTalk(new Cat()); makeItTalk(new Dog()); makeItTalk(new Tiger()); } public static void makeItTalk(Animal animal) {; //Polymorphism magic } }
  • 39. Polymorphism Polymorphism Employee Pay Java programs Employee SalariedEmp HourlyEmp
  • 40. Polymorphism Polymorphism Java Examples Shape Circle Rectangle Cylinder Square
  • 41. Advantages of Polymorphism ● Code reusability ● Maintainability ● Extensibility ● Reduction in Complexity
  • 42. Disadvantages of Polymorphism ● Code harder to read ● More design time ● Expert programmers harder to find