1
COMP 250
Lecture 32
polymorphism
- Nov. 25, 2016
polymorphism Nov. 25, 2016 1 Recall example from lecture 30 Dog - - PowerPoint PPT Presentation
COMP 250 Lecture 32 polymorphism Nov. 25, 2016 1 Recall example from lecture 30 Dog myDog = new Beagle(); class Dog String serialNumber myDog.bark(); Person owner void bark() ?????? {print
1
class Dog String serialNumber Person owner void bark() {print “woof”} : class Beagle void hunt () void bark() {print “aowwwuuu”}
extends class Doberman void fight () void bark() {print “Arh! Arh! Arh!”} extends
class Dog String serialNumber Person owner void bark() {print “woof”} : class Beagle void hunt () void bark() {print “aowwwuuu”}
extends class Doberman void fight () void bark() {print “Arh! Arh! Arh!”} extends
class descriptor
class descriptor
class descriptor
class descriptor
Dog
Beagle
Beagle
Doberman
Doberman
Dog class descriptor Beagle class descriptor LinkedList class descriptor Doberman class descriptor String class descriptor
https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html
Dog
Beagle
Beagle
Doberman
Doberman
Dog class descriptor Beagle class descriptor LinkedList class descriptor Doberman class descriptor String class descriptor
class Animal : class Dog : class Beagle : extends extends
boolean equals( Object ) int hashCode( ) String toString( ) Object clone( ) Class getClass()
extends (automatic)
Class getSuperClass() Method[ ] getMethods( ) Field[ ] getFields( ) String getName( ) :
extends
Dog
Beagle
Beagle
Doberman
Doberman
Dog class descriptor Beagle class descriptor LinkedList class descriptor Doberman class descriptor String class descriptor getClass() returns getClass() returns getClass() returns
Dog
Beagle
Beagle
Doberman
Doberman
Dog class descriptor Beagle class descriptor LinkedList class descriptor Doberman class descriptor String class descriptor getClass() returns getClass() returns getClass() returns Class class descriptor getClass() returns Object class descriptor getClass() returns
class Animal : class Dog : class Beagle : extends extends
boolean equals( Object ) int hashCode( ) String toString( ) Object clone( ) Class getClass()
extends (automatic)
Class getSuperClass() Method[ ] getMethods( ) Field[ ] getFields( ) String getName( ) :
extends
Dog
Beagle
Beagle
Doberman
Doberman
Object class descriptor Beagle class descriptor Doberman class descriptor getSuperClass() returns Dog class descriptor getSuperClass() returns getSuperClass() returns
Dog
Beagle
Beagle
Doberman
Doberman
Beagle class descriptor Doberman class descriptor Dog class descriptor getSuperClass() returns getClass() returns getClass() returns Object class descriptor getSuperClass() returns
Beagle
Beagle class descriptor Dog class descriptor getSuperClass() returns getClass() returns Object class descriptor getSuperClass() returns
Beagle
Beagle class descriptor Dog class descriptor Object class descriptor
Test class descriptor
Beagle
Beagle class descriptor Dog class descriptor Object class descriptor
Test.main() someMethod() anotherMethod() goForWalk()
Test class descriptor
Beagle class descriptor Dog class descriptor Object class descriptor
Test.main()
Dog myDog
Beagle()
Test class descriptor
Beagle
Beagle class descriptor Dog class descriptor Object class descriptor
Test.main()
Dog myDog
Test class descriptor
Beagle
Beagle class descriptor Dog class descriptor Object class descriptor
Test.main()
Dog myDog
bark() this
TestProgram class descriptor
Look for the bark() method in the class descriptor
Beagle
Beagle class descriptor Dog class descriptor Object class descriptor
Test.main() bark()
TestProgram class descriptor
Local variables and parameters of methods are here Object instance fields are here Methods are here