Difference between revisions of "Java/C3/Using-final-keyword/English"
Line 383: | Line 383: | ||
newEmail is equal to inside double quotes abc@gmail.com semicolon. | newEmail is equal to inside double quotes abc@gmail.com semicolon. | ||
− | + | We have modified the final variable newEmail. | |
− | + | ||
|- | |- | ||
| style="border:1pt solid #000000;padding:0.097cm;"| '''Save''' &''' Run''' the program. | | style="border:1pt solid #000000;padding:0.097cm;"| '''Save''' &''' Run''' the program. | ||
− | | style="border:1pt solid #000000;padding:0.097cm;"| Once again '''Save''' & '''Run '''the program. | + | | style="border:1pt solid #000000;padding:0.097cm;"| Once again we will '''Save''' & '''Run '''the program. |
|- | |- | ||
Line 394: | Line 393: | ||
'''final parameter newEmail may not be assigned''' | '''final parameter newEmail may not be assigned''' | ||
− | | style="border:1pt solid #000000;padding:0.097cm;"| We | + | | style="border:1pt solid #000000;padding:0.097cm;"| We get error. |
− | + | The final local variable newEmail cannot be assigned. | |
− | + | ||
|- | |- | ||
Line 402: | Line 400: | ||
| style="border:1pt solid #000000;padding:0.097cm;"| This is because '''final''' variable as parameter to a '''method '''cannot be modified by that '''method.''' | | style="border:1pt solid #000000;padding:0.097cm;"| This is because '''final''' variable as parameter to a '''method '''cannot be modified by that '''method.''' | ||
− | + | So lets remove the variable modification. | |
'''<nowiki><<</nowiki>PAUSE>>''' | '''<nowiki><<</nowiki>PAUSE>>''' | ||
|- | |- | ||
| style="border:1pt solid #000000;padding:0.097cm;"| | | style="border:1pt solid #000000;padding:0.097cm;"| | ||
− | | style="border:1pt solid #000000;padding:0.097cm;"| Now | + | | style="border:1pt solid #000000;padding:0.097cm;"| Now we will learn about''' final''' '''method'''. |
|- | |- | ||
| style="border:1pt solid #000000;padding:0.097cm;"| Go to '''Employee '''class | | style="border:1pt solid #000000;padding:0.097cm;"| Go to '''Employee '''class | ||
− | + | Come to the method''' getDetails''' in employee class. | |
− | | style="border:1pt solid #000000;padding:0.097cm;"| Come | + | | style="border:1pt solid #000000;padding:0.097cm;"| Come to the method''' getDetails''' in employee class. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| style="border:1pt solid #000000;padding:0.097cm;"| Type final keyword before''' getDetails.''' | | style="border:1pt solid #000000;padding:0.097cm;"| Type final keyword before''' getDetails.''' | ||
− | | style="border:1pt solid #000000;padding:0.097cm;"| Add | + | | style="border:1pt solid #000000;padding:0.097cm;"| |
+ | Add final keyword before method getDetails. | ||
+ | |||
|- | |- | ||
| style="border:1pt solid #000000;padding:0.097cm;"| '''Save''' and '''Run''' the program. | | style="border:1pt solid #000000;padding:0.097cm;"| '''Save''' and '''Run''' the program. | ||
− | | style="border:1pt solid #000000;padding:0.097cm;"| | + | | style="border:1pt solid #000000;padding:0.097cm;"| '''Save '''and '''Run''' the program. |
|- | |- | ||
Line 439: | Line 429: | ||
'''Cannot override the final method from Employee''' | '''Cannot override the final method from Employee''' | ||
− | | style="border:1pt solid #000000;padding:0.097cm;"| We get | + | | style="border:1pt solid #000000;padding:0.097cm;"| We get error, |
− | ''' | + | '''class Manager overrides final method getDetails.()''' |
|- | |- | ||
| style="border:1pt solid #000000;padding:0.097cm;"| | | style="border:1pt solid #000000;padding:0.097cm;"| | ||
− | | style="border:1pt solid #000000;padding:0.097cm;"| This is because if you make any''' method''' as '''final''', you cannot''' override''' it. | + | | style="border:1pt solid #000000;padding:0.097cm;"| |
+ | Come to the method getDetails() in Manager class. | ||
+ | This is because if you make any''' method''' as '''final''', you cannot''' override''' it. | ||
+ | Manager class method getDetails overrides getDetails method in Employee class. | ||
|- | |- | ||
Line 462: | Line 455: | ||
|- | |- | ||
| style="border:1pt solid #000000;padding:0.097cm;"| Go to '''Eclipse IDE''' | | style="border:1pt solid #000000;padding:0.097cm;"| Go to '''Eclipse IDE''' | ||
− | | style="border:1pt solid #000000;padding:0.097cm;"| | + | | style="border:1pt solid #000000;padding:0.097cm;"| Switch back to '''Eclipse IDE.''' |
|- | |- | ||
| style="border:1pt solid #000000;padding:0.097cm;"| Go to '''Employee''' class | | style="border:1pt solid #000000;padding:0.097cm;"| Go to '''Employee''' class | ||
− | | style="border:1pt solid #000000;padding:0.097cm;"| | + | | style="border:1pt solid #000000;padding:0.097cm;"| |
− | + | In Employee class remove final keyword before method getDetails. | |
− | + | Remove static keyword before final variable name. | |
|- | |- | ||
Line 479: | Line 472: | ||
− | | style="border:1pt solid #000000;padding:0.097cm;"| | + | | style="border:1pt solid #000000;padding:0.097cm;"| |
+ | Now we will learn whether constructor can me declared as final or not | ||
+ | For that we will again create a constructor. | ||
− | + | So instead of static we will type, | |
+ | Employee parentheses. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
Line 504: | Line 492: | ||
'''modifier final not allowed here''' | '''modifier final not allowed here''' | ||
− | | style="border:1pt solid #000000;padding:0.097cm;"| We get | + | | style="border:1pt solid #000000;padding:0.097cm;"| We get error once. |
− | ''' | + | '''Illegal modifier for the constructor in type Employee''' |
|- | |- | ||
| style="border:1pt solid #000000;padding:0.097cm;"| | | style="border:1pt solid #000000;padding:0.097cm;"| | ||
| style="border:1pt solid #000000;padding:0.097cm;"| This is because '''constructor''' cannot be''' final''' since '''constructors''' are not inherited. | | style="border:1pt solid #000000;padding:0.097cm;"| This is because '''constructor''' cannot be''' final''' since '''constructors''' are not inherited. | ||
+ | we will remove the final keyword before the constructor. | ||
|- | |- | ||
| style="border:1pt solid #000000;padding:0.097cm;"| | | style="border:1pt solid #000000;padding:0.097cm;"| | ||
− | | style="border:1pt solid #000000;padding:0.097cm;"| Next, | + | | style="border:1pt solid #000000;padding:0.097cm;"| Next, we will learn about''' final class.''' |
− | |||
− | |||
− | |||
|- | |- | ||
| style="border:1pt solid #000000;padding:0.097cm;"| Type '''final '''keyword before the class '''Employee.''' | | style="border:1pt solid #000000;padding:0.097cm;"| Type '''final '''keyword before the class '''Employee.''' | ||
− | | style="border:1pt solid #000000;padding:0.097cm;"| Add''' final''' '''keyword''' before the '''class''' '''Employee.''' | + | | style="border:1pt solid #000000;padding:0.097cm;"| Add''' final''' '''keyword''' before the '''class''' '''Employee.''' to make it final. |
|- | |- | ||
Line 532: | Line 518: | ||
'''The type Manager cannot subclass the final class Employee''' | '''The type Manager cannot subclass the final class Employee''' | ||
− | | style="border:1pt solid #000000;padding:0.097cm;"| We get | + | | style="border:1pt solid #000000;padding:0.097cm;"| We get an |
'''“The type Manager cannot subclass the final class Employee.”''' | '''“The type Manager cannot subclass the final class Employee.”''' |
Revision as of 13:01, 5 August 2014
Title of script: USING FINAL KEYWORD
Author: Trupti Rajesh Kini
Keywords: video tutorial, final keyword, final variable, final method, final class
Visual Cue | Narration |
Slide 1 | Welcome to the spoken-tutorial on Using final keyword. |
Slide 2 | In this tutorial we will learn about the final keyword and when to invoke it.
|
Slide 3
Software Requirements
|
To record this tutorial, I am using
|
Slide 4
Prerequisites
|
To follow this tutorial, you must have,
If not, for relevant Java tutorials, please visit our website. |
Slide 5
final keyword |
First of all, we will learn what final keyword is.
final is a keyword or reserved word in Java. It can be applied to variables, methods and classes. |
What is final variable?
Slide 6 |
Now, let us learn what final variable is.
That is, it will be a constant. |
Go to the Eclipse IDE >> Click on MyProject | I am switching to Eclipse IDE now.
|
Go to the Employee class | So we will directly go to the Employee class of the project. |
Point to the variable name | Come to the variable called name. |
Type final keyword | Add final keyword before the variable name.
We have made the variable name as final. |
Type sneha | We will initialize the variable name with value sneha. |
Save and Run the program. | We will Save and Run the program. |
Highlight the error
cannot assign a value to final variable name name=newName; |
We get compilation error.
|
This is because here the final variable is already declared and initialised.
We can initialize a final variable only once. So we will comment the method setName which modifies the variable name. Save the class | |
Go to TestEmployee class->main method
Type // before manager.setName("Nikkita Dinesh"); |
Now, come to TestEmployee class.
|
Save and Run the program. | Now lets Save the class and Run the program. |
Highlight the output
Name: Sneha Email: abc@gmail.com Manager of: Accounts |
Great!!!
We got the output, Name: Sneha Email: abc@gmail.com Manager of: Accounts |
We got this output as we already initialized variables with these values in TestEmployee class and Employee class. | |
Go to Employee class->variable name | Go to the Employee class.
Now come to the final variable name. in Employee class. |
Remove the initialization “sneha” | Remove the initialization of final variable name.
That is remove “sneha”. |
Go to the method setName
Uncomment the method. |
Uncomment the method setName.
|
Save and run the program. | Save and Run the program. |
Highlight the error
cannot assign a value to final variable name name=newName; |
We get the error,
The final field Employee.name cannot be assigned |
This is because if the final variable is not initialised, then only constructor can initialize it.
That is it cannot be modified anywhere else in the program. | |
Go to Employee class | For that, let’s create a constructor in the Employee class.
|
We know that constructor has the same name as class name. | |
Type,
Employee() { name="Sneha"; } |
SO we will type
Employee, parentheses, open and close curly brackets
|
Point to the method setName
Enclose the method inside /* */ |
Comment the method setName. |
Save and Run the program. | Save and Run the program. |
Highlight the output
Name: Sneha Email: abc@gmail.com Manager of: Accounts |
We got the desired output.
|
final variable is successfully initialized in a constructor. | |
Now we will learn about final static variables. | |
Go to the Employee class | Come to the final variable in Employee class.
|
Type static before final keyword | Add static keyword before final keyword
We have made the final variable as static. |
Save & Run the program. | Save and Run the program. |
Highlight the error
cannot assign a value to final variable name name="Sneha"; |
We get error.
The final field Employee.name cannot be assigned |
slides and document is not synchronized from this point and onward.
Further slide 9.1 and 9.2 [i.e. 25,26] contains one extra word block in second bullet,doneSlide 7 |
This is because static final variables cannot be initialized in the constructor.
|
Slide 8 | static variables are shared among all the objects of a class.
|
Go to Eclipse IDE | Switch back to Eclipse IDE. |
Go to the Employee class ->constructor
|
So now we will create a static block.
We have created a static block. |
Now we will Save and Run the program. | Now we will Save and Run the program. |
Highlight the output,
Name: Sneha Email: abc@gmail.com Manager of: Accounts |
We got the desired output,
We have successfully initialized static final variable.
|
Now let’s use final variable as a parameter to the method. | |
Go to the method setEmail | Come to the method setEmail. in Employee class. |
Type final before String newEmail | Add final keyword before String newEmail
We have made the parameter as final. |
Save and Run the program. | Save and Run the program. |
Highlight the output
Name: Sneha Email: abc@gmail.com Manager of: Accounts |
We got the desired output,
|
Type newEmail="kinitrupti@gmail.com"; | Now, come to the method setEmail.
Inside the method we will type, newEmail is equal to inside double quotes abc@gmail.com semicolon. We have modified the final variable newEmail. |
Save & Run the program. | Once again we will Save & Run the program. |
Highlight the error,
final parameter newEmail may not be assigned |
We get error.
The final local variable newEmail cannot be assigned. |
This is because final variable as parameter to a method cannot be modified by that method.
So lets remove the variable modification. <<PAUSE>> | |
Now we will learn about final method. | |
Go to Employee class
Come to the method getDetails in employee class. |
Come to the method getDetails in employee class.
|
Type final keyword before getDetails. |
Add final keyword before method getDetails.
|
Save and Run the program. | Save and Run the program. |
Point to the compilation error,
Cannot override the final method from Employee |
We get error,
class Manager overrides final method getDetails.() |
Come to the method getDetails() in Manager class. This is because if you make any method as final, you cannot override it. Manager class method getDetails overrides getDetails method in Employee class. | |
Slide 9 | What if final method is private?
|
Go to Eclipse IDE | Switch back to Eclipse IDE. |
Go to Employee class |
In Employee class remove final keyword before method getDetails. Remove static keyword before final variable name. |
Type,
Employee() { name="Sneha"; }
|
Now we will learn whether constructor can me declared as final or not For that we will again create a constructor. So instead of static we will type, Employee parentheses.
|
Type final before the constructor | Add final before the constructor. |
Save and run the program. | Save and run the program. |
Highlight compilation error,
modifier final not allowed here |
We get error once.
Illegal modifier for the constructor in type Employee |
This is because constructor cannot be final since constructors are not inherited.
we will remove the final keyword before the constructor. | |
Next, we will learn about final class.
| |
Type final keyword before the class Employee. | Add final keyword before the class Employee. to make it final. |
Save and Run the program. | Save and Run the program. |
Highlight the compilation error,
The type Manager cannot subclass the final class Employee |
We get an
“The type Manager cannot subclass the final class Employee.”
|
Slide 10 | This is because if you make any class as final, you cannot extend it. |
Remove the keyword final before Employee class | Remove the keyword final before Employee class. |
Save and Run the program. | Now Save and Run the program. |
Highlight the output,
|
This time we get the output,
Name: Sneha Email: abc@gmail.com Manager of: Accounts
|
Let us summarize. | |
Slide 11
Summary
|
In this tutorial we have learnt:
|
Slide 12
Assignment
|
As an assignment
|
Slide 13
About Spoken Tutorial Project
|
Watch the video available at the following link http://spoken-tutorial.org/What is a Spoken Tutorial
|
Slide 14
About Spoken Tutorial workshops
|
The Spoken Tutorial Project Team
|
Slide 15
Acknowledgement
|
Spoken Tutorial Project is a part of the Talk to a Teacher project
This is Trupti Kini from IIT Bombay signing off. Thanks for joining. |