This document discusses polymorphism and inheritance in object-oriented programming. It begins with defining polymorphism and how it relates to inheritance and class encapsulation. An example is provided to demonstrate how a reference variable can refer to objects from different classes that inherit from the same parent class. The document also discusses specific uses of polymorphism in methods and arrays, as well as notes about overriding and adding new methods. It covers casting objects and using the instanceof operator to check the type before casting. Key concepts of polymorphism, inheritance, overriding, and casting are summarized.
Constructors, Destructors, call in parameterized Constructor, Multiple constructor in a class, Explicit/implicit call, Copy constructor, Dynamic Constructors and call in parameterized Constructor
Constructors, Destructors, call in parameterized Constructor, Multiple constructor in a class, Explicit/implicit call, Copy constructor, Dynamic Constructors and call in parameterized Constructor
OOPS in java | Super and this Keyword | Memory Management in java | pacakages...Sagar Verma
OOPS and its application in Java, Super class AND This Keyword,Java Bean, POJO ,Memory management in Java ,Packages ,Miscellaneous (Var-Args, toString(), Double equals operator(==))
A small presentation on Polymorphism in Java that I made for college in my BSc 2nd semester.
P.S.- I am an indie developer, check out my apps and games :)
Model Attribute Check Company Auto PropertyCeline George
In Odoo, the multi-company feature allows you to manage multiple companies within a single Odoo database instance. Each company can have its own configurations while still sharing common resources such as products, customers, and suppliers.
Operation “Blue Star” is the only event in the history of Independent India where the state went into war with its own people. Even after about 40 years it is not clear if it was culmination of states anger over people of the region, a political game of power or start of dictatorial chapter in the democratic setup.
The people of Punjab felt alienated from main stream due to denial of their just demands during a long democratic struggle since independence. As it happen all over the word, it led to militant struggle with great loss of lives of military, police and civilian personnel. Killing of Indira Gandhi and massacre of innocent Sikhs in Delhi and other India cities was also associated with this movement.
Synthetic Fiber Construction in lab .pptxPavel ( NSTU)
Synthetic fiber production is a fascinating and complex field that blends chemistry, engineering, and environmental science. By understanding these aspects, students can gain a comprehensive view of synthetic fiber production, its impact on society and the environment, and the potential for future innovations. Synthetic fibers play a crucial role in modern society, impacting various aspects of daily life, industry, and the environment. ynthetic fibers are integral to modern life, offering a range of benefits from cost-effectiveness and versatility to innovative applications and performance characteristics. While they pose environmental challenges, ongoing research and development aim to create more sustainable and eco-friendly alternatives. Understanding the importance of synthetic fibers helps in appreciating their role in the economy, industry, and daily life, while also emphasizing the need for sustainable practices and innovation.
2024.06.01 Introducing a competency framework for languag learning materials ...Sandy Millin
http://sandymillin.wordpress.com/iateflwebinar2024
Published classroom materials form the basis of syllabuses, drive teacher professional development, and have a potentially huge influence on learners, teachers and education systems. All teachers also create their own materials, whether a few sentences on a blackboard, a highly-structured fully-realised online course, or anything in between. Despite this, the knowledge and skills needed to create effective language learning materials are rarely part of teacher training, and are mostly learnt by trial and error.
Knowledge and skills frameworks, generally called competency frameworks, for ELT teachers, trainers and managers have existed for a few years now. However, until I created one for my MA dissertation, there wasn’t one drawing together what we need to know and do to be able to effectively produce language learning materials.
This webinar will introduce you to my framework, highlighting the key competencies I identified from my research. It will also show how anybody involved in language teaching (any language, not just English!), teacher training, managing schools or developing language learning materials can benefit from using the framework.
Acetabularia Information For Class 9 .docxvaibhavrinwa19
Acetabularia acetabulum is a single-celled green alga that in its vegetative state is morphologically differentiated into a basal rhizoid and an axially elongated stalk, which bears whorls of branching hairs. The single diploid nucleus resides in the rhizoid.
Introduction to AI for Nonprofits with Tapp NetworkTechSoup
Dive into the world of AI! Experts Jon Hill and Tareq Monaur will guide you through AI's role in enhancing nonprofit websites and basic marketing strategies, making it easy to understand and apply.
1. CHAPTER 8 INHERITANCE AND
POLYMORPHISM
Oum Saokosal, Chief of Computer Science
National Polytechnic Institute of Cambodia
Tel: (855)-12-252-752
E-mail: oum_saokosal@yahoo.com
1
3. Polymorphism
1. What is polymorphism?
2. Why polymorphism?
3. Specific uses of polymorphism
4. Notes
5. Remember
6. Casting
7. instanceof Operations
8. Remember
3
4. What is Polymorphism? (1)
• OOP has 3 features:
1. Class encapsulation
2. Inheritance
3. Polymorphism
• Polymorphism is a mechanism to allow a single variable
to refer to objects from different classes.
4
5. What is Polymorphism? Example (2)
• Assume we have GraduateStudent which inherits from
Student. Here is an example.
public class Student{
public String getClassName(){
return "Student Class";
}
}
5
Student
+getClassName():String
UndergraduateStudent
+getClassName():String
GraduateStudent
+getClassName():String
6. What is Polymorphism? Example (3)
//Continue ...
public class GraduateStudent extends Student{
@Override public String getClassName(){
return "GraduateStudent Class";
}
}
public class UndergraduateStudent extends Student{
@Override public String getClassName(){
return “UndergraduateStudent Class";
}
}
6
7. What is Polymorphism? Test 1 (4)
//Test1 1 – Polymorphism
public class TestPoly1{
public static void main(String[] args){
Student s = new UndergraduateStudent();
System.out.println(s.getClassName());
}
}
Q. What is output?
A. UnderGraduateStudent Class
7
That’s polymorphism
8. What is Polymorphism? Test 2 (5)
//Example 2 – Without Polymorphism
public class TestNoPoly2 {
public static void main(String[] args){
GraduateStudent gs = new GraduateStudent();
displayUnder(gs);
displayGraduate(new UndergraduateStudent());
}
static void displayUnder(GraduateStudent gs){
System.out.println(gs.getClassName());
}
static void displayGraduate(UndergraduateStudent us){
System.out.println(us.getClassName());
}
}
8
9. What is Polymorphism? Test 2 (6)
//Example 2 – With Polymorphism
public class TestPoly2 {
public static void main(String[] args){
display(new GraduateStudent());
display(new UndergraduateStudent());
}
//Polymorphic method
public static void display(Student stu){
System.out.println(stu.getClassName());
}
}
9
10. Why Polymorphism? (1)
• Why Polymorphism?
1. To choose which method from which class is called at
runtime dynamically.
2. A variable of a parent type can refer to any child and
grand child of the parent.
Student stu = new GraduateStudent();
stu.getClassName();
10
Student
getClassName():String
UndergraduateStudent
getClassName():String
GraduateStudent
getClassName():String
Parent/Superclass Children/Subclass
11. Specific Uses of Polymorphism
Methods (1)
Methods
• If we don’t use polymorphism, you have to make a new
method for every different parameter data type. Look at
slide 8.
• But with polymorphism, you make only one method for
every parameter which has the same parent. Look at
slide 9.
11
12. Specific Uses of Polymorphism
Array (2)
Array: In Java, every element in an array has the same
type, doesn’t it? E.g.
double[] scores = new double[10];
scores[0] = 1.4;
scores[1] = “Hi”; //Compile Error
Circle[] circles = new Circle[5];
circles[0] = new Circle(5);
circles[1] = new Circle(20);
circles[2] = new Student();//Compile Error
12
13. Specific Uses of Polymorphism
Array (3)
Q. If I do want to store different types of objects in one
array, how can I do it?
A. Use polymorphism.
If the objects are inherited from the same parent, we
can store them in the same array.
Example:
Student[] students = new Student[3];
students[0] = new Student();
students[1] = new GraduateStudent();
students[2] = new UndergraduateStudent();
13
14. Specific usages of Polymorphism
Array (4)
public class TestPoly3 {
public static void main(String[] args){
Student[] s = new Student[3];
s[0] = new Student();
s[1] = new GraduateStudent();
s[2] = new UndergraduateStudent();
display(s); //Polymorphism
}
public static void display(Student[] s){
for(int i = 0; i<s.length; i++){
System.out.println(s[i].getClassName());
}
}
}
14
15. Note #1 (1)
• Look at the codes again.
public class Student{
public String getClassName(){
return "Student Class";
}
}
public class GraduateStudent extends Student{
@Override public String getClassName(){
return "GraduateStudent Class";
}
}
public class UndergraduateStudent extends Student{
@Override public String getClassName(){
return “UndergraduateStudent Class";
}
}
15
GraduateStudent and
UndergraduateStudent
override getClassName()
method!
16. Note #1 (2)
• Please note that the two subclasses of Student override
getClassName().
Then, we can use polymorphism to refer to getClassName() in
the sub class.
public class TestPoly1{
public static void main(String[] args){
Student s;
s = new GraduateStudent();
System.out.println(s.getClassName());
s = new UndergraduateStudent();
System.out.println(s.getClassName());
}
}
16
17. Note #2 (1)
• But now in a subclass GraduateStudent, we add a
new method, say getDegree().
public class GraduateStudent extends Student{
public String getClassName(){
return "GraduateStudent Class";
}
public String getDegree(){
return "Msc in Computer Science";
}
}
17
18. Note #2 (2)
• And then we want to use polymorphism to call
getDegree() in the subclass,
public class TestPoly1{
public static void main(String[] args){
Student s = new GraduateStudent();
System.out.println(s.getDegree());
}
}
It will show a compile error because Student class
doesn’t have getDegree().
18
19. Note #3 (1)
• What about if we want add a method, say getID() to
the parent, Student.
public class Student{
public String getClassName(){
return "Student Class";
}
public String getID(){
return “NPIC001";
}
}
19
20. Note #3 (2)
• Then we want to call getID().
public class TestPoly1{
public static void main(String[] args){
Student s = new GraduateStudent();
System.out.println(s.getID());
}
}
Q. Is it a compile error?
A. No. As long as getID() is in Student, we can call
it without any question.
20
21. The bottom line (1)
1. As long as subclasses inherit from the same parent, you
can declare a variable as the parent type and then refer
to any subclasses.
Student stu; //stu is parent type
//stu refers to subclasses
stu = new UndergraduateStudent();
stu = new GraduateStudent();
21
Student
getClassName():String
UndergraduateStudent
getClassName():String
GraduateStudent
getClassName():String
22. The bottom line (2)
2. When you call a method which exists both in a parent
and subclass, then it will dynamically refer to the
method in the subclass. (This is the main reason to use
Polymorphism) See slide 7.
3. You cannot call methods that are NOT existed in
parent. If you try it, you will get compile error.
See slide 18.
4. However, you can call every method in the superclass.
See slide 19 & 20.
22
23. Remember (1)
• Polymorphism is a mechanism to enable us to choose a
method at runtime dynamically.
• Polymorphism always needs Inheritance.
• Polymorphism always needs Overridden Methods.
• There is no keyword to indicate Polymorphism.
• You can recognise it whenever you see a class type that is
different from its constructor. E.g.
Student s = new GraduateStudent();
• You can also recognise it, when a class type is Object
class. E.g.
private void aMethod(Object ob){...}
23
24. Remember (2)
• Polymorphism is not as vital as inheritance. That is,
without polymorphism, you still CAN make a Java
program; however without inheritance, especially when
using Java library code, you CANNOT achieve very much.
24
25. Casting Objects (1)
• What is Casting?
Casting is a technique to convert a variable from one
primitive type to another one. E.g.:
double d1 = 2.5;
double d2 = 12;
int i1 = 23;
int i2 = 22.5; // Compile Error
• How to solve this error?
int i2 = (int) 22.5; // i2 = 22
//Casting from double 22.5 to integer.
25
26. Casting Objects (2)
• To understand casting, let’s meet a group of animals
studying polymorphism.
26
SR: Smart Rabbit
CB: Curious Ball
CB is a curious student who always asks questions
whereas SR is a smart student. She can help to answer
CB’s questions.
27. Casting Objects (3)
CB: Hey Smart Rabbit! Can I ask you some questions?
SR: Yes, Of course. What can I do for ya?
CB: I have 2 classes, Grape inherits from Fruit.
27
28. Casting Objects (4)
SR: So what?
CB: Grape has four methods. And Fruit has only two
methods. Then I want to use polymorphism like this:
Fruit f = new Grape();
So which methods can I call from f?
f._ _ _ ?
SR: Then you can call only those methods from Fruit
class like isEatable() and getColor(), and, of
course, other 9 methods from Object class.
28
29. Casting Objects (5)
CB: You know, usually when I define a variable with a
parent type and refer to a constructor from the same
class, I can call every method from it.
Grape g = new Grape();
g.getTaste(); // OK
g.getVitamin(); //OK
SR: Yeh, and what is your problem?
CB: But now when I use polymorphism, it seems to me
that I couldn’t do what I used to do.
Fruit fruit = new Grape();
fruit.getTaste(); // Compile Error
fruit.getVitamin(); // Compile Error
29
30. Casting Objects (6)
CB: So do you have any solution, Rabbit?
SR: Why not? You can use “casting” to cast from
Fruit to another Grape variable.
CB: Can you show me?
SR: Sure! Here it is:
Fruit fruit = new Grape();
Grape grape = (Grape) fruit; // Casting
grape.getTaste(); //OK
grape.getVitamin(); //OK
30
31. Casting Objects (6)
CB: Yeh... but you still create a variable that has Grape
as its parent type. It doesn’t make sense to me?
SR: Why not?
CB: You know, it is much better if I just create a
variable which has Grape as its type and refer to its
constructor since the beginning like this:
Grape g = new Grape();
g.getTaste(); // OK
g.getVitamin(); //OK
31
32. Casting Objects (7)
SR: Well, but do you remember polymorphic method?
CB: Yes.
SR: So can I tell me some about it?
CB: polymorphic method is just like other methods but
the type of parameters is always a superclass. For
example:
public static void display(Object o){
JOptionPane.showMessageDialog(null, o);
}
SR: Yehh! You are good!
32
33. Casting Objects (8)
CB: Thank you. But how polymorphic method works with casting?
SR: OK! I’ll show you the differences when not using casting and when
using casting.
public class TestNoCasting {
public static void main(String[] args){
showTaste(new Grape());
}
public static void showTaste(Fruit fruit){
JOptionPane.showMessageDialog(null,
fruit.getTaste());
} //Error because Fruit has not getTaste()
}
33
34. Casting Objects (9)
SR: Here is codes when using casting.
public class TestCastingObject {
public static void main(String[] args){
showTaste(new Grape());
}
public static void showTaste(Fruit fruit){
Grape grape = (Grape) fruit;
JOptionPane.showMessageDialog(null,
grape.getTaste()); //OK
}
}
34
35. Casting Objects (10)
CB: Wow! Now I got. Casting can help polymorphism
more powerful. Both Java and you are very smart.
SR: Not yet dude!
CB: What else?
SR: What about if I add another class, say Apple
inherits also from Fruit? Let’s see it on the next
slide.
35
37. Casting Objects (11)
SR: Then I pass in Apple object to showTaste() method.
public class TestCastingObject {
public static void main(String[] args){
showTaste(new Apple());
}
public static void showTaste(Fruit fruit){
Grape grape = (Grape) fruit;
JOptionPane.showMessageDialog(null,
grape.getTaste());
}
}//Runtime Error: casting wrong class
37
38. instanceof Operation (1)
CB: Wo.. ho.. ho. I didn’t realize it.
SR: Don’t worry! Remember Java is number one in the
world.
CB: So what is your solution?
SR: We can use instanceof to test whether it is
correct object or not before we cast it.
CB: Can you show how?
SR: OK, Let’s go to the next slide.
38
39. instanceof Operation (2)
public static void main(String[] args) {
showTaste(new Apple());
}
public static void showTaste(Fruit fruit) {
if (fruit instanceof Grape) {
Grape grape = (Grape) fruit;
System.out.print(grape.getTaste());
} else if(fruit instanceof Apple) {
Apple apple = (Apple) fruit;
System.out.print(apple.getTaste());
}
}
39
40. instanceof Operation (3)
40
CB: OK. It seems to me that I know them all,
but I want to ask you, Smart Rabbit,
whether the 3rd year students in NPIC who
are watching us understand it or not.
SR: This is a hard question. I’m
not sure either. You’ve better
ask them by yourself.
41. Remember (1)
• Casting is a technique to convert a variable from one
class type to another one within an inheritance hierarchy.
That is, if we cast a class to another class in different root,
you will get run-time error. E.g:
Fruit fruit = new Grape();
Grape grape = (Grape) fruit;// OK
Apple apple = (Apple) fruit;//Runtime Error
41
42. Remember (2)
• A keyword instanceof is an operation to check whether a
class that we want to cast is in the correct hierarchy or
not.
• E.g.:
Fruit fruit = new Grape();
if(fruit instanceof Grape){
Grape grape = (Grape) fruit;
} else if(fruit instanceof Apple){
Apple apple = (Apple) fruit;
}
fruit.getColor();
fruit.getTaste();
42