184 lines
2.5 KiB
Plaintext
184 lines
2.5 KiB
Plaintext
|
Application
|
|||
|
Programming
|
|||
|
Hend Alkittawi
|
|||
|
|
|||
|
OOP Concepts
|
|||
|
Polymorphism
|
|||
|
|
|||
|
POLYMORPHISM
|
|||
|
-
|
|||
|
|
|||
|
Polymorphism enables you to write programs that processes
|
|||
|
objects that share the same superclass either directly or
|
|||
|
indirectly as if they were all objects of the superclass.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
The polymorphism occurs when a program invokes a method
|
|||
|
through a superclass variable, at execution time the correct
|
|||
|
subclass version of the method is called based on the type of
|
|||
|
reference stored in the superclass variable.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
A program can determine the type of an object at execution
|
|||
|
time and act on that object accordingly.
|
|||
|
|
|||
|
POLYMORPHISM
|
|||
|
|
|||
|
Animal
|
|||
|
|
|||
|
Fish
|
|||
|
|
|||
|
🐟
|
|||
|
|
|||
|
Frog
|
|||
|
|
|||
|
🐸
|
|||
|
|
|||
|
Bird
|
|||
|
|
|||
|
🐦
|
|||
|
|
|||
|
xy coordinates
|
|||
|
|
|||
|
xy coordinates
|
|||
|
|
|||
|
xy coordinates
|
|||
|
|
|||
|
move()
|
|||
|
|
|||
|
move()
|
|||
|
|
|||
|
move()
|
|||
|
|
|||
|
POLYMORPHISM
|
|||
|
Quadrilatera
|
|||
|
l
|
|||
|
|
|||
|
Square
|
|||
|
|
|||
|
Trapezoid
|
|||
|
|
|||
|
Parallelogram
|
|||
|
s
|
|||
|
|
|||
|
color
|
|||
|
|
|||
|
color
|
|||
|
|
|||
|
color
|
|||
|
|
|||
|
getPerimeter()
|
|||
|
|
|||
|
getPerimeter()
|
|||
|
|
|||
|
getPerimeter()
|
|||
|
|
|||
|
POLYMORPHISM
|
|||
|
|
|||
|
SpaceObject
|
|||
|
|
|||
|
LaserBeam
|
|||
|
|
|||
|
SpaceShip
|
|||
|
|
|||
|
Plutonian
|
|||
|
|
|||
|
picture
|
|||
|
|
|||
|
picture
|
|||
|
|
|||
|
picture
|
|||
|
|
|||
|
draw()
|
|||
|
|
|||
|
draw()
|
|||
|
|
|||
|
draw()
|
|||
|
|
|||
|
public class Animal {
|
|||
|
|
|||
|
public class PolymorphismDemo {
|
|||
|
|
|||
|
private String name;
|
|||
|
|
|||
|
public static void main(String[] args) {
|
|||
|
|
|||
|
public Animal(String name) { this.name = name; }
|
|||
|
|
|||
|
// Animal reference but Dog object
|
|||
|
Animal myAnimal = new Dog("Thunder", 30);
|
|||
|
// Output: Thunder the dog barks.
|
|||
|
myAnimal.makeSound();
|
|||
|
|
|||
|
public String getName() { return name; }
|
|||
|
public void setName(String name) { this.name = name; }
|
|||
|
|
|||
|
// Animal reference but Cat object
|
|||
|
myAnimal = new Cat("Whiskers", "Persian");
|
|||
|
// Output: Whiskers the cat meows.
|
|||
|
myAnimal.makeSound();
|
|||
|
|
|||
|
public void eat() { System.out.println(getName() + " eats food."); }
|
|||
|
public void makeSound() { System.out.println("Animal makes a sound."); }
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public class Dog extends Animal {
|
|||
|
public class Cat extends Animal {
|
|||
|
private int exerciseNeeds; // in min/day
|
|||
|
private String breed;
|
|||
|
public Dog(String name, int exerciseNeeds) {
|
|||
|
super(name);
|
|||
|
this.exerciseNeeds = exerciseNeeds;
|
|||
|
}
|
|||
|
public int getExerciseNeeds() {
|
|||
|
return exerciseNeeds;
|
|||
|
}
|
|||
|
public void setExerciseNeeds(int exerciseNeeds) {
|
|||
|
this.exerciseNeeds = exerciseNeeds;
|
|||
|
}
|
|||
|
@Override
|
|||
|
public void makeSound() {
|
|||
|
System.out.println(getName() + " the dog barks.");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public Cat(String name, String breed) {
|
|||
|
super(name);
|
|||
|
this.breed = breed;
|
|||
|
}
|
|||
|
public String getBreed() {
|
|||
|
return breed;
|
|||
|
}
|
|||
|
public void setBreed(String breed) {
|
|||
|
this.breed = breed; }
|
|||
|
@Override
|
|||
|
public void makeSound() {
|
|||
|
System.out.println(getName() + " the cat meows.");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
CODE DEMO
|
|||
|
-
|
|||
|
|
|||
|
Create classes to demo
|
|||
|
polymorphism concepts!
|
|||
|
|
|||
|
DO YOU HAVE ANY
|
|||
|
QUESTIONS?
|
|||
|
|
|||
|
THANK
|
|||
|
YOU!
|
|||
|
|
|||
|
@
|
|||
|
|
|||
|
hend.alkittawi@utsa.edu
|
|||
|
|
|||
|
By Appointment
|
|||
|
Online
|
|||
|
|
|||
|
|