Difference between revisions of "Java/C3/Polymorphism/English-timed"

From Script | Spoken-Tutorial
Jump to: navigation, search
(Created page with " {| Border=1 | '''Time''' | '''Narration''' |- | 00:01 | Welcome to the '''spoken-tutorial '''on '''Polymorphism in Java.''' |- | 00:06 | In this tutorial we will learn :...")
 
 
(3 intermediate revisions by 2 users not shown)
Line 6: Line 6:
 
|-
 
|-
 
| 00:01
 
| 00:01
| Welcome to the '''spoken-tutorial '''on '''Polymorphism in Java.'''  
+
| Welcome to the '''spoken-tutorial '''on '''Polymorphism''' in Java.
  
 
|-
 
|-
 
| 00:06
 
| 00:06
| In this tutorial we will learn :  
+
| In this tutorial, we will learn about:
 +
 +
'''Polymorphism''' in Java
  
* About '''Polymorphism''' in Java
+
'''Run-time polymorphism'''
* '''Run-time polymorphism'''
+
 
* '''Virtual Method Invocation''' and
+
'''Virtual Method Invocation''' and
* '''Compile-time polymorphism'''
+
 
 +
'''Compile-time polymorphism'''.
  
 
|-
 
|-
 
| 00:19
 
| 00:19
| Here we are using  
+
| Here we are using:
* '''Ubuntu Linux Version 12.04'''
+
* '''JDK Version 1.7''' and
+
'''Ubuntu Linux Version 12.04'''
* '''Eclipse 4.3.1'''  
+
 
 +
'''JDK Version 1.7''' and
 +
 
 +
'''Eclipse 4.3.1'''  
  
 
|-
 
|-
 
| 00:31
 
| 00:31
| To follow this tutorial, you must have basic knowledge of '''Java and Eclipse IDE.'''  
+
| To follow this tutorial, you must have basic knowledge of '''Java''' and '''Eclipse IDE'''.
  
 
|-
 
|-
 
| 00:37
 
| 00:37
| You must have knowledge of '''Subclassing '''& '''Method overriding and overloading'''
+
| You must have knowledge of '''Subclassing '''& '''Method overriding''' and '''overloading'''.
  
 
|-
 
|-
Line 38: Line 44:
 
|-
 
|-
 
| 00:48
 
| 00:48
| '''Polymorphism''' is an ability of an object to take on many forms.
+
| '''Polymorphism''' is an ability of an '''object''' to take on many forms.
  
 
|-
 
|-
Line 46: Line 52:
 
1. Reduction of complexity &
 
1. Reduction of complexity &
  
2. Code re-usability  
+
2. Code re-usability.
  
 
|-
 
|-
Line 54: Line 60:
 
|-
 
|-
 
| 01:11
 
| 01:11
| '''Compile-time polymorphism''' is essentially refered as '''Method overloading'''.  It is also called '''Static Binding'''.  
+
| '''Compile-time polymorphism''' is essentially referred as '''Method overloading'''.  It is also called '''Static Binding'''.  
  
 
|-
 
|-
Line 74: Line 80:
 
|-
 
|-
 
| 01:49
 
| 01:49
| '''Employee '''class is the parent class.
+
| '''Employee '''class is the '''parent class'''.
  
 
|-
 
|-
 
| 01:52
 
| 01:52
|  '''Manager '''class is the subclass.
+
|  '''Manager '''class is the '''subclass'''.
  
 
|-
 
|-
Line 86: Line 92:
 
|-
 
|-
 
| 02:01
 
| 02:01
| '''Manager '''class method '''getDetails()''' overrides the '''Employee '''class method '''getDetails().'''
+
| '''Manager '''class method '''getDetails()''' '''override'''s the '''Employee '''class method '''getDetails().'''
  
 
|-
 
|-
 
| 02:08
 
| 02:08
| We are calling the '''getDetails()''' method by '''Manager '''class object i.e. '''Manager.'''
+
| We are calling the '''getDetails()''' method by '''Manager '''class '''object''' i.e. '''Manager.'''
  
 
|-
 
|-
 
|  02:16
 
|  02:16
|  In order to print the details, type '''system.out.println Details of Manager Class.'''
+
|  In order to print the details, type: '''system.out.println Details of Manager Class.'''
  
 
|-
 
|-
 
| 02:28
 
| 02:28
| '''Save '''and run the program. So we can see '''department''' variable value in the output.
+
| '''Save '''and '''run''' the program. So, we can see '''department''' variable value in the output.
  
 
|-
 
|-
Line 150: Line 156:
 
|-
 
|-
 
| 03:46
 
| 03:46
|Type, '''Employee emp1 = new Employee open and close parenthesis semicolon'''
+
|Type: '''Employee emp1 = new Employee open and close parenthesis semicolon'''
  
 
|-
 
|-
Line 158: Line 164:
 
|-
 
|-
 
| 04:03
 
| 04:03
|Type, '''emp1.setName("Jayesh");''' '''emp1.setEmail("pqr@gmail.com");'''
+
|Type: '''emp1.setName("Jayesh");''' '''emp1.setEmail("pqr@gmail.com");'''
  
 
|-
 
|-
 
| 04:16
 
| 04:16
| In order to print the employee details type, '''System.out.println("Details of Employee class:"  emp1.getDetails()) semicolon'''
+
| In order to print the employee details, type: '''System.out.println("Details of Employee class:"  emp1.getDetails()) semicolon'''
  
 
|-
 
|-
Line 168: Line 174:
 
| Let us instantiate '''Manager '''object '''emp2 '''for '''Employee '''class reference i.e.
 
| Let us instantiate '''Manager '''object '''emp2 '''for '''Employee '''class reference i.e.
  
type '''Employee emp2 = new Manager open and close parenthesis semicolon'''
+
type: '''Employee emp2 = new Manager open and close parenthesis semicolon'''
  
 
|-
 
|-
 
| 04:54
 
| 04:54
| We are able to do this because any '''Java''' object that pass more than one '''IS-A '''test, is polymorphic.
+
| We are able to do this because any '''Java object''' that pass more than one '''IS-A '''test, is polymorphic.
  
 
|-
 
|-
 
| 05:04
 
| 05:04
|In '''Java''', all objects are polymorphic, since any object will pass the '''IS-A '''test for their own type and for the class Object.
+
|In Java, all objects are polymorphic, since any object will pass the '''IS-A '''test for their own type and for the class Object.
  
 
|-
 
|-
 
| 05:16
 
| 05:16
|* A Manager '''IS-A''' Employee
+
|A Manager '''IS-A''' Employee
* A Manager '''IS-A''' Manager
+
 
* A Manager '''IS-A''' Object
+
A Manager '''IS-A''' Manager
 +
 
 +
A Manager '''IS-A''' Object.
  
 
|-
 
|-
Line 195: Line 203:
 
| 05:36  
 
| 05:36  
 
|Here, we instantiated two '''Manager''' objects:
 
|Here, we instantiated two '''Manager''' objects:
 
+
One which references '''Employee '''class.
*One which references '''Employee '''class.
+
And other which references '''Manager '''class.
*And other which references '''Manager '''class.
+
  
 
|-
 
|-
Line 215: Line 222:
 
|-
 
|-
 
| 06:14
 
| 06:14
| We see that there is an error, '''The method setDepartment(String) is undefined for the type Employee'''
+
| We see that there is an error, "The method setDepartment(String) is undefined for the type Employee".
  
 
|-
 
|-
Line 223: Line 230:
 
|-
 
|-
 
| 06:30
 
| 06:30
| So, remove the line, '''emp2.setDepartment("IT");'''
+
| So, remove the line: '''emp2.setDepartment("IT");'''
  
 
|-
 
|-
 
| 06:37
 
| 06:37
| In order to print the  details, type, '''System.out.println("Details of Manager class:"  emp2.getDetails()) semicolon'''
+
| In order to print the  details, type: '''System.out.println("Details of Manager class:"  emp2.getDetails()) semicolon'''
  
 
|-
 
|-
Line 235: Line 242:
 
|-
 
|-
 
| 06:58
 
| 06:58
| Here in the output. We get the '''Manager of: '''as blank.
+
| Here in the output, we get the '''Manager of: '''as blank.
  
 
|-
 
|-
 
| 07:04
 
| 07:04
|This is because we have not initialized '''department''' in '''Manager '''class using '''emp2'''.
+
|This is because, we have not initialized '''department''' in '''Manager '''class using '''emp2'''.
  
 
|-
 
|-
Line 259: Line 266:
 
|-
 
|-
 
| 07:34
 
| 07:34
|'''Manager''' object referring '''Employee''' class & '''Manager '''object referring '''Manager '''class,
+
|'''Manager''' object referring '''Employee''' class & '''Manager '''object referring '''Manager '''class.
  
 
|-
 
|-
Line 272: Line 279:
 
| 07:54
 
| 07:54
 
| The reason for that is as follows:
 
| The reason for that is as follows:
 
 
The compiler sees the '''getDetails()''' method in the '''Employee''' class during '''emp2.getDetails()'''.
 
The compiler sees the '''getDetails()''' method in the '''Employee''' class during '''emp2.getDetails()'''.
  
Line 281: Line 287:
 
|-
 
|-
 
| 08:10
 
| 08:10
|At run time, however, the '''JVM''' invokes '''getDetails()''' in the '''Manager''' class as '''getDetails() '''of '''Manager '''class overrides '''getDetails() '''of '''Employee '''class.
+
|At '''run''' time, however, the '''JVM''' invokes '''getDetails()''' in the '''Manager''' class as '''getDetails() '''of '''Manager '''class overrides '''getDetails() '''of '''Employee '''class.
  
 
|-
 
|-
Line 301: Line 307:
 
|-
 
|-
 
| 08:57
 
| 08:57
|At run time, the '''JVM''' invokes '''getDetails()''' in the '''Employee''' class. So we get the output as per '''getDetails() '''of '''Employee '''class.
+
|At run time, the '''JVM''' invokes '''getDetails()''' in the '''Employee''' class. So, we get the output as per '''getDetails() '''of '''Employee '''class.
  
 
|-
 
|-
 
| 09:08
 
| 09:08
| Thus the '''JVM''' calls the appropriate method for the object that is referred to in each variable.
+
| Thus the '''JVM''' calls the appropriate method for the '''object''' that is referred to in each variable.
  
 
|-
 
|-
Line 333: Line 339:
 
|-
 
|-
 
| 09:47
 
| 09:47
|In '''Compile time polymorphism''', class can have more than one method.
+
|In '''Compile time polymorphism''', '''class''' can have more than one '''method'''.
  
 
|-
 
|-
Line 349: Line 355:
 
|-
 
|-
 
| 10:11
 
| 10:11
| In this tutorial we learnt:  
+
| In this tutorial, we learnt: What is '''Polymorphism''' in Java?
  
* What is '''Polymorphism''' in Java?
+
'''Run-time polymorphism'''
* '''Run-time polymorphism'''
+
 
* '''Virtual Method Invocation''' and
+
'''Virtual Method Invocation''' and
* '''Compile-time polymorphism'''
+
 
 +
'''Compile-time polymorphism'''.
  
 
|-
 
|-
 
| 10:23
 
| 10:23
 
| As an assignment,
 
| As an assignment,
 
 
Override methods for '''Vehicle''' and '''Bike class''' which we used in previous tutorials.
 
Override methods for '''Vehicle''' and '''Bike class''' which we used in previous tutorials.
  
Line 368: Line 374:
 
|-
 
|-
 
| 10:40
 
| 10:40
| The Spoken Tutorial Project Team conducts workshops and gives certificates to those who pass an online test.
+
| The Spoken Tutorial Project Team: conducts workshops and gives certificates to those who pass an online test.
  
 
For more details, please write to us.
 
For more details, please write to us.
Line 374: Line 380:
 
|-
 
|-
 
| 10:51
 
| 10:51
| Spoken Tutorial Project is supported by NMEICT, MHRD, Government of India.
+
| Spoken Tutorial Project is supported by NMEICT, MHRD, Government of India. More information on this mission is available at this link.
 
+
More information on this Mission is available at this link.
+
  
 
|-
 
|-
 
| 11:03
 
| 11:03
| Thats it for the tutorial. This is Trupti Kini from IIT Bombay signing off. Thank you for joining.
+
| Thats it for the tutorial. This is Trupti Kini from '''IIT Bombay''', signing off. Thank you for joining.
  
 
|}
 
|}

Latest revision as of 13:01, 8 December 2017

Time Narration
00:01 Welcome to the spoken-tutorial on Polymorphism in Java.
00:06 In this tutorial, we will learn about:

Polymorphism in Java

Run-time polymorphism

Virtual Method Invocation and

Compile-time polymorphism.

00:19 Here we are using:

Ubuntu Linux Version 12.04

JDK Version 1.7 and

Eclipse 4.3.1

00:31 To follow this tutorial, you must have basic knowledge of Java and Eclipse IDE.
00:37 You must have knowledge of Subclassing & Method overriding and overloading.
00:43 If not, for relevant Java tutorials, please visit our website.
00:48 Polymorphism is an ability of an object to take on many forms.
00:54 The major advantages of Polymorphism are:

1. Reduction of complexity &

2. Code re-usability.

01:03 In Java, there are two types of polymorphism: Compile-time and Run-time polymorphism.
01:11 Compile-time polymorphism is essentially referred as Method overloading. It is also called Static Binding.
01:20 Run-time polymorphism is essentially referred as Method overriding. It is also called Dynamic Binding.
01:29 We have already learnt Run-time polymorphism i.e. Method overriding.
01:35 Let us switch to Eclipse IDE. I have already created a project named MyProject in the previous tutorial.
01:44 Let us take the code files of Using final keyword tutorial.
01:49 Employee class is the parent class.
01:52 Manager class is the subclass.
01:55 Manager class contains an additional variable department.
02:01 Manager class method getDetails() overrides the Employee class method getDetails().
02:08 We are calling the getDetails() method by Manager class object i.e. Manager.
02:16 In order to print the details, type: system.out.println Details of Manager Class.
02:28 Save and run the program. So, we can see department variable value in the output.
02:37 Therefore subclass method is invoked at runtime.
02:42 Method invocation is determined by the JVM, not compiler.
02:48 Therefore it is known as Runtime polymorphism or method overriding.
02:55 We learnt what is Run time polymorphism.
02:58 Now let us learn Virtual Method Invocation.
03:03 Come to Employee class in Eclipse IDE.
03:07 Remove the static and final keywords for variable name.
03:13 Uncomment the method setName.
03:16 Remove the static block. Save the file.
03:21 Come to TestEmployee class. Uncomment the value instance, manager.setName(“Nikkita Dinesh”);
03:31 We uncommented this instance, as we have uncommented the method setName() in Empolyee class.
03:38 Now, let's instantiate Employee object emp1 for Employee class reference.
03:46 Type: Employee emp1 = new Employee open and close parenthesis semicolon
03:57 Let's initialize the value for setEmail and setName for Employee class.
04:03 Type: emp1.setName("Jayesh"); emp1.setEmail("pqr@gmail.com");
04:16 In order to print the employee details, type: System.out.println("Details of Employee class:" emp1.getDetails()) semicolon
04:37 Let us instantiate Manager object emp2 for Employee class reference i.e.

type: Employee emp2 = new Manager open and close parenthesis semicolon

04:54 We are able to do this because any Java object that pass more than one IS-A test, is polymorphic.
05:04 In Java, all objects are polymorphic, since any object will pass the IS-A test for their own type and for the class Object.
05:16 A Manager IS-A Employee

A Manager IS-A Manager

A Manager IS-A Object.

05:23 Only possible way to access an object is through a reference variable.
05:29 Reference variables like emp1, emp2 and manager.
05:36 Here, we instantiated two Manager objects:

One which references Employee class. And other which references Manager class.

05:47 Let’s initialize the values for setEmail, setName and setDepartment using emp2 object.
05:55 Type,

emp2.setName("Ankita");

emp2.setEmail(“xyz@gmail.com”);

emp2.setDepartment(“IT”);

06:14 We see that there is an error, "The method setDepartment(String) is undefined for the type Employee".
06:23 This is because, setDepartment method does not exist for Employee class.
06:30 So, remove the line: emp2.setDepartment("IT");
06:37 In order to print the details, type: System.out.println("Details of Manager class:" emp2.getDetails()) semicolon
06:55 Save and Run the program.
06:58 Here in the output, we get the Manager of: as blank.
07:04 This is because, we have not initialized department in Manager class using emp2.
07:12 For demo purpose, let the default department be IT.
07:17 So, go to Manager class and initialize the value for department.
07:25 Save and run the program.
07:28 We get the output: Employee object referring Employee class,
07:34 Manager object referring Employee class & Manager object referring Manager class.
07:42 Here we see that the getDetails() method of Manager class is called by emp2.
07:49 But when emp2 tried calling setDepartment, we got an error.
07:54 The reason for that is as follows:

The compiler sees the getDetails() method in the Employee class during emp2.getDetails().

08:05 So, it does not throw an error and validates the code.
08:10 At run time, however, the JVM invokes getDetails() in the Manager class as getDetails() of Manager class overrides getDetails() of Employee class.
08:24 So, we get the output as per getDetails() of Manager class. But the compiler does not see the setDepartment method in the Employee class.
08:36 Therefore, it raises an error in case of setDepartment call by emp2.
08:43 Here, Employee method getDetails() is invoked for Employee class.
08:49 The compiler references Employee class for getDetails() during emp1.getDetails().
08:57 At run time, the JVM invokes getDetails() in the Employee class. So, we get the output as per getDetails() of Employee class.
09:08 Thus the JVM calls the appropriate method for the object that is referred to in each variable.
09:16 This behavior is referred to as Virtual Method Invocation.
09:21 The methods are referred to as Virtual Methods.
09:26 All methods in Java behave in this manner.
09:31 We successfully learnt what is Virtual Method Invocation.
09:36 We have already learnt Compile-time polymorphism i.e. method overloading.
09:42 Let us quickly know Compile time polymorphism in brief.
09:47 In Compile time polymorphism, class can have more than one method.
09:53 The methods have same name but with different number of arguments.
09:59 Compiler is able to figure out the method call at compile-time. That’s the reason it is known as compile time polymorphism.
10:09 So, let us summarize.
10:11 In this tutorial, we learnt: What is Polymorphism in Java?

Run-time polymorphism

Virtual Method Invocation and

Compile-time polymorphism.

10:23 As an assignment,

Override methods for Vehicle and Bike class which we used in previous tutorials.

10:32 The video available at the following link summarizes the Spoken Tutorial project. Please watch it.
10:40 The Spoken Tutorial Project Team: conducts workshops and gives certificates to those who pass an online test.

For more details, please write to us.

10:51 Spoken Tutorial Project is supported by NMEICT, MHRD, Government of India. More information on this mission is available at this link.
11:03 Thats it for the tutorial. This is Trupti Kini from IIT Bombay, signing off. Thank you for joining.

Contributors and Content Editors

PoojaMoolya, Pratik kamble, Sandhya.np14