Difference between revisions of "Java/C3/Abstract-Classes/English"
(Created page with "'''Title of script:''' Abstract Classes '''Author:''' Joms Antony '''Keywords:''' Abstract Methods, Concrete Methods, Abstract Classes, Concrete Classes, Inheritance, Method...") |
Nancyvarkey (Talk | contribs) |
||
Line 22: | Line 22: | ||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| In this tutorial we will learn about: | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| In this tutorial we will learn about: | ||
− | |||
* '''Abstract Methods '''and''' Concrete Methods''' | * '''Abstract Methods '''and''' Concrete Methods''' | ||
* '''Abstract Classes '''and''' Concrete Classes '''and | * '''Abstract Classes '''and''' Concrete Classes '''and | ||
* How to use '''Abstract Classes''' | * How to use '''Abstract Classes''' | ||
− | |||
− | |||
|- | |- | ||
Line 37: | Line 34: | ||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| For this tutorial, I am using | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| For this tutorial, I am using | ||
− | |||
* '''Ubuntu 12.04''' | * '''Ubuntu 12.04''' | ||
* '''JDK 1.7 '''and | * '''JDK 1.7 '''and | ||
* '''Eclipse''' '''4.3.1''' | * '''Eclipse''' '''4.3.1''' | ||
− | |||
− | |||
|- | |- | ||
Line 65: | Line 59: | ||
'''What is an Abstract Method?''' | '''What is an Abstract Method?''' | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| An '''Abstract method''' is a''' ''' | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| An '''Abstract method''' is a''' method''' that is declared without implementation. |
− | It | + | It is declared using''' abstract '''keyword. |
− | There should not be opening and closing parenthesis for this method. | + | There should not be opening and closing parenthesis for this '''method'''. |
|- | |- | ||
Line 79: | Line 73: | ||
'''Example:''' | '''Example:''' | ||
− | |||
Highlight the method and '''abstract''' keyword | Highlight the method and '''abstract''' keyword | ||
Line 85: | Line 78: | ||
− | Note that this''' ''' | + | Note that this '''method''' is declared using the''' abstract '''keyword, with no current implementation. |
|- | |- | ||
Line 100: | Line 93: | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| A '''Concrete | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| A '''Concrete method''' is completely implemented within the curly brackets. |
Line 106: | Line 99: | ||
− | Observe that this method is implemented completely. | + | Observe that this '''method''' is implemented completely. |
|- | |- | ||
Line 140: | Line 133: | ||
'''Abstract Class - Example''' | '''Abstract Class - Example''' | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| The figure here represents an inheritance relation. | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| The figure here represents an '''inheritance relation'''. |
Here, the''' Person class''' is an''' abstract class.''' | Here, the''' Person class''' is an''' abstract class.''' | ||
− | The''' Employee class''' and | + | The''' Employee class''' and the '''Student class''' are '''subclasses''' of the''' Person class'''. |
− | These subclasses can provide their own different implementations. | + | These '''subclasses''' can provide their own different implementations. |
|- | |- | ||
Line 160: | Line 153: | ||
For example: | For example: | ||
− | '''ShowDetails() Method''' in the''' Employee class''' prints the '''Employee ID''' and | + | '''ShowDetails() Method''' in the''' Employee class''' prints the '''Employee ID''' and the''' Salary''', where as |
− | '''ShowDetails() Method''' in the''' Student class''' prints the '''Student Reg No''' and | + | '''ShowDetails() Method''' in the''' Student class''' prints the '''Student Reg No''' and the '''Grade.''' |
|- | |- | ||
Line 170: | Line 163: | ||
'''ExampleSlide 10''' | '''ExampleSlide 10''' | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| A''' ''' | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| A '''class''' is said to be a''' concrete class,''' if all the '''methods''' in that '''class''' are''' concrete methods'''. |
− | The '''class Employee''' illustrated here is a''' concrete class'''. | + | The '''class Employee''' illustrated here, is a''' concrete class'''. |
− | All the methods inside this class including''' showDetails()''' are concrete. | + | All the '''methods''' inside this '''class''' including''' showDetails()''' are '''concrete'''. |
|- | |- | ||
Line 183: | Line 176: | ||
|- | |- | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| In Ecilpse IDE a project called '''AbstractDemo''' is created, | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| In '''Ecilpse IDE''' a project called '''AbstractDemo''' is created, |
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now we will switch to''' Eclipse''' and create a new project called '''AbstractDemo'''. | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now we will switch to''' Eclipse''' and create a new '''project''' called '''AbstractDemo'''. |
− | Inside this project we will create the necessary classes to demonstrate the usage of''' Abstract class.''' | + | Inside this '''project''', we will create the necessary '''classes''' to demonstrate the usage of''' Abstract class.''' |
|- | |- | ||
Line 196: | Line 189: | ||
− | |||
− | |||
− | |||
− | |||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now, right click on '''src''' folder and click '''new-'''> '''class'''. | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now, right click on '''src''' folder and click '''new-'''> '''class'''. | ||
− | Type the name of the class as '''Person''' and press '''Enter'''. | + | Type the name of the '''class''' as '''Person''' and press '''Enter'''. |
+ | |- | ||
+ | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| | ||
+ | Type | ||
− | Now we will add the fields to represent the name and age of the''' Person'''. | + | '''String name;''' |
+ | |||
+ | '''int age;''' | ||
+ | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|Now we will add the fields to represent the name and age of the''' Person'''. | ||
Line 220: | Line 215: | ||
− | Delete the '''super '''keyword | + | Delete the '''super '''keyword from the generated code. |
|- | |- | ||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''Constructor''' code | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''Constructor''' code | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| This '''constructor''' can initialise the values of '''name''' and '''age '''fields | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| This '''constructor''' can initialise the values of '''name''' and '''age '''fields. |
|- | |- | ||
Line 240: | Line 235: | ||
So type '''public void showBasicDetails( ).''' | So type '''public void showBasicDetails( ).''' | ||
− | Within brackets type, | + | Within '''brackets''' type, |
+ | |||
+ | '''System.out.println''' within round brackets and within quotes type''' Name colon''' plus''' name semicolon''' | ||
− | |||
Also type | Also type | ||
− | '''System. | + | '''System.out.println''' within round brackets and within quotes''' Age colon''' plus''' age semicolon''' |
|- | |- | ||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Type | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Type | ||
− | '''public void showDetails( )''' | + | '''public void showDetails( );''' |
− | |||
− | |||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now we will add an '''abstract method''' to this '''class'''. | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now we will add an '''abstract method''' to this '''class'''. | ||
− | So type '''public void showDetails( )''' | + | So type '''public void showDetails( ) semicolon''' |
− | + | |- | |
− | An error comes up, since we have not yet added the''' abstract '''keyword. | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| |
+ | Point to the error | ||
+ | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| An error comes up, since we have not yet added the''' abstract '''keyword. | ||
|- | |- | ||
| style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Type the keyword''' abstract''' | | style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Type the keyword''' abstract''' | ||
− | + | | style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| So now, add the keyword '''abstract.''' | |
− | + | ||
− | | style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| So now add the keyword '''abstract.''' | + | |
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
Line 277: | Line 268: | ||
− | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now we can see, another error comes up. | |
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now we can see another error comes up. | + | |
− | This is because, '''abstract methods''' can be added only to '''abstract | + | This is because, '''abstract methods''' can be added only to '''abstract classes'''. |
− | + | |- | |
− | So now add the keyword''' abstract''' to the''' Person class '''to make it an''' abstract class.''' | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|Type the keyword''' abstract''' |
+ | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|So now, add the keyword''' abstract''' to the''' Person class '''to make it an''' abstract class.''' | ||
|- | |- | ||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Right click on the '''default package''' and create another''' class''' called''' Employee.''' | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Right click on the '''default package''' and create another''' class''' called''' Employee.''' | ||
− | |||
− | |||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Then right click on the '''default package''' and create another''' class''' called''' Employee.''' | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Then right click on the '''default package''' and create another''' class''' called''' Employee.''' | ||
− | + | |- | |
− | Now to make this a subclass of '''Person class, '''type''' extends Person'''. | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Type''' extends Person''' |
+ | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now to make this a '''subclass''' of '''Person class, '''type''' extends Person'''. | ||
|- | |- | ||
Line 301: | Line 291: | ||
− | It indicates that, we should provide an implementation to the '''abstract method | + | It indicates that, we should provide an implementation to the '''abstract method showDetails( )'''. |
Line 307: | Line 297: | ||
|- | |- | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Type | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Type |
'''String empid semicolon;''' | '''String empid semicolon;''' | ||
Line 315: | Line 305: | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now create two fields to represent the employee id and employee salary. | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now create two fields to represent the '''employee id''' and '''employee salary'''. |
− | So type''' String empid semicolon''' | + | So type |
− | + | *''' String empid semicolon''' | |
− | and''' int salary semicolon''' | + | *and''' int salary semicolon''' |
|- | |- | ||
Line 345: | Line 335: | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Let us now define the''' showDetails''' ''' | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Let us now define the''' showDetails method'''. |
+ | |||
+ | So type''' public void showDetails( )''' | ||
− | |||
− | Inside this method, we need to print the employee details. | + | Inside this '''method''', we need to print the employee details. |
So type | So type | ||
− | '''System. | + | '''System.out.println''' within quotes''' Emp id colon''' plus''' empid semicolon''' |
− | '''System. | + | '''System.out.println''' within quotes''' Salary colon''' plus''' salary semicolon''' |
Line 363: | Line 354: | ||
|- | |- | ||
| style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| | | style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| | ||
− | | style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Next we will see a '''Student class''' of the project. | + | | style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Next we will see a '''Student class''' of the '''project'''. |
|- | |- | ||
| style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Show and highlight the code for Student Class. | | style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Show and highlight the code for Student Class. | ||
− | | style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| I have already created a subclass called''' Student'''. | + | | style="border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| I have already created a '''subclass''' called''' Student'''. |
|- | |- | ||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Highlight the''' regno''' and''' grade''' fields | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Highlight the''' regno''' and''' grade''' fields | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| There are two fields in the '''Student class, regno''' and''' grade''' which represent student reg. no and grade. | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| There are two fields in the '''Student class, regno''' and''' grade''' which represent '''student reg. no''' and '''grade'''. |
|- | |- | ||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Highlight''' constructor''' | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Highlight''' constructor''' | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| A '''constructor''' is also created inside this class. | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| A '''constructor''' is also created inside this '''class'''. |
Line 388: | Line 379: | ||
{ | { | ||
+ | System.out.println("Student regno:"+regno); | ||
− | System. | + | System.out.println("Student grade:"+grade); |
− | + | ||
− | + | ||
} | } | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| The''' showDetails''' | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| The''' showDetails method''' is also implemented in this '''class'''. |
− | |||
+ | It prints the values of''' Student Reg. Number''' and''' grade''' | ||
|- | |- | ||
Line 405: | Line 395: | ||
Highlight''' showDetails()''' method of''' student class''' | Highlight''' showDetails()''' method of''' student class''' | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now note that the''' Employee''' | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now note that the''' Employee class''' has its own implementation of''' showDetails().''' |
− | And the''' Student''' | + | And the''' Student class''' has its own implementation of''' showDetails().''' |
|- | |- | ||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Right click on the '''default package, '''click '''new'''-> '''class''' and then type name as''' Demo'''. | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Right click on the '''default package, '''click '''new'''-> '''class''' and then type name as''' Demo'''. | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now right click on the '''default package | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now right click on the '''default package.''' |
+ | Click on '''new'''-> '''class''' and then type name as''' Demo.''' | ||
− | |||
+ | Inside this '''class''', we will have the '''main method''', | ||
− | So type '''main''' and then press | + | |
+ | So type '''main''' and then press '''Ctrl space''' to generate the''' main method.''' | ||
|- | |- | ||
Line 425: | Line 417: | ||
Person p =new Person(“John”); | Person p =new Person(“John”); | ||
− | |||
− | |||
− | |||
− | |||
− | |||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now let us try to instantiate the''' Person class''' by typing | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now let us try to instantiate the''' Person class''' by typing | ||
Line 435: | Line 422: | ||
− | Within brackets and double quotes type '''John''' and put a semicolon. | + | Within brackets and double quotes, type '''John''' and put a '''semicolon'''. |
+ | |- | ||
+ | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Point to the error | ||
− | Now we can see an error. | + | |
+ | Remove the line | ||
+ | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now we can see an error. | ||
Line 444: | Line 435: | ||
− | + | Let's remove this line. | |
|- | |- | ||
Line 472: | Line 463: | ||
− | Now let us instantiate the''' Person class''' using the''' Employee | + | Now let us instantiate the''' Person class''' using the''' Employee class''' as '''Person p1 equals new Employee.''' |
− | In the first line, we are passing the values of different arguments. | + | In the first line, we are passing the values of different '''arguments'''. |
+ | *'''John''' is passed as '''Employee name''', | ||
− | ''' | + | *'''40''' as the value of '''ageE267''' as the value of '''Employee ID''' and |
− | + | *'''10000''' as the value of '''Employee salary.''' | |
− | + | ||
− | '''10000''' as the value of '''Employee salary.''' | + | |
Line 488: | Line 478: | ||
− | We can also call the''' showDetails()''' | + | We can also call the''' showDetails() method''' using the '''object p1''' as '''p1.showDetails()''' |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | Similarly, instantiate the''' Person class''' using the''' Student class'''. | |
− | + | This is represented as '''Person p2 equals new Student.''' | |
− | |||
+ | Now we are passing the values of different '''arguments'''. | ||
− | + | *'''Hari''' is passed as the value of''' student name''', | |
− | ''' | + | *'''20''' as the value of '''age'''. |
+ | *'''12005''' as the value of''' student Reg No.''' and | ||
− | + | *'''A''' as the value of '''grade'''. | |
− | |||
+ | Now we can call the''' showBasicDetails() method '''using the '''object p2''' as '''p2.showBasicDetails()''' | ||
+ | We can also invoke the''' showDetails() method''' using the '''object p2''' as '''p2.showDetails()''' | ||
|- | |- | ||
Line 524: | Line 507: | ||
− | So right click on the '''class | + | So right click on the '''class Demo''' and then select '''Run as''' ->''' Java Application''' |
|- | |- | ||
Line 534: | Line 517: | ||
− | Other Employee details like''' employee ID '''and '''salary '''are printed by the''' showDetails() | + | Other Employee details like''' employee ID '''and '''salary '''are printed by the''' showDetails() method'''. |
− | Similarly the basic student details like '''name''' and '''age''' are printed by''' showBasicDetails() method.''' | + | Similarly, the basic student details like '''name''' and '''age''' are printed by''' showBasicDetails() method.''' |
Other details of the student like | Other details of the student like | ||
− | '''Student reg no '''and '''grade''' are printed by the''' showDetails() | + | '''Student reg no '''and '''grade''' are printed by the''' showDetails() method'''. |
|- | |- | ||
Line 557: | Line 540: | ||
* '''Abstract Classes '''and''' Concrete Classes '''and | * '''Abstract Classes '''and''' Concrete Classes '''and | ||
* How to create and use''' Abstract Classes''' | * How to create and use''' Abstract Classes''' | ||
− | |||
− | |||
|- | |- | ||
Line 564: | Line 545: | ||
'''Assignment''' | '''Assignment''' | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| As an | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| As an assignment- |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | # Create an '''abstract class Vehicle''' which contains an '''abstract method run()''' | ||
+ | # Create a '''subclass Car''' which extends the '''Vehicle class''' and implements the '''run method''' that prints '''“Car is running on 4 wheels”''' | ||
+ | # Also create a'''subclass Bike''' which again extends the '''Vehicle class''' and implements the '''run method''' that prints '''“Bike is running on 2 wheels”''' | ||
# Also create a '''Demo class '''containing the''' main method''' to verify the results. | # Also create a '''Demo class '''containing the''' main method''' to verify the results. | ||
− | |||
− | |||
|- | |- | ||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''About Project''' | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''About Project''' | ||
− | |||
− | |||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| The video at the following link summarizes the''' '''Spoken Tutorial Project. | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| The video at the following link summarizes the''' '''Spoken Tutorial Project. | ||
− | |||
Please download and watch it. | Please download and watch it. | ||
Line 597: | Line 566: | ||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| The Spoken Tutorial Project Team | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| The Spoken Tutorial Project Team | ||
− | + | * Conducts workshops using spoken tutorials | |
− | + | * Gives certificates on passing the online tests | |
− | + | ||
− | + | ||
For more details, please write to us. | For more details, please write to us. | ||
Line 606: | Line 573: | ||
|- | |- | ||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''About NMEICT''' | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''About NMEICT''' | ||
− | |||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Spoken Tutorial Project is funded by NMEICT, MHRD, Government of India. | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Spoken Tutorial Project is funded by NMEICT, MHRD, Government of India. | ||
− | |||
More information on this Mission is available at the link shown. | More information on this Mission is available at the link shown. | ||
Line 620: | Line 585: | ||
| style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| This script has been contributed by: | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| This script has been contributed by: | ||
− | + | Dept. of Information Technology, Amal Jyothi College of Engineering. | |
− | Dept. of Information | + | |
− | + | ||
− | Technology, Amal Jyothi College of Engineering. | + | |
Revision as of 09:59, 24 December 2015
Title of script: Abstract Classes
Author: Joms Antony
Keywords: Abstract Methods, Concrete Methods, Abstract Classes, Concrete Classes, Inheritance, Method Implementation, Video tutorial, java tutorial
|
|
Slide 1: | Welcome to the Spoken Tutorial on Abstract Classes. |
Slide 2:
Learning Objectives
|
In this tutorial we will learn about:
|
Slide 3:
Software Requirements
|
For this tutorial, I am using
|
Slide 4:
Prerequisites
|
To follow this tutorial, you should have knowledge of basics of Java and Eclipse IDE.
You should also have the knowledge of subclassing in Java. If not, for relevant Java tutorials, please visit the link shown. |
First we will see about Abstract Method. | |
Slide 5:
What is an Abstract Method? |
An Abstract method is a method that is declared without implementation.
|
Slide 6:
Abstract Method Example: Highlight the method and abstract keyword |
The method showDetails() illustrated here, is an example of abstract method.
|
Next we will see about concrete method. | |
Slide 7:
Concrete Method: Example:
|
A Concrete method is completely implemented within the curly brackets.
|
Now we will learn about abstract class with an example. | |
Slide 8:
Abstract Class: |
An abstract class usually contains at least one abstract method.
|
Slide 9:
Abstract Class - Example
|
The class Person illustrated here is an abstract class.
|
Slide 10:
Abstract Class - Example |
The figure here represents an inheritance relation.
Here, the Person class is an abstract class. The Employee class and the Student class are subclasses of the Person class. These subclasses can provide their own different implementations. |
Go back to Slide 9 and point the showDetails() method
|
These are done by showDetails( ) method present in the Person class.
For example: ShowDetails() Method in the Employee class prints the Employee ID and the Salary, where as ShowDetails() Method in the Student class prints the Student Reg No and the Grade. |
Slide 11:
Concrete Class: ExampleSlide 10 |
A class is said to be a concrete class, if all the methods in that class are concrete methods.
|
Let us understand the usage of Abstract class with a sample program. | |
In Ecilpse IDE a project called AbstractDemo is created,
|
Now we will switch to Eclipse and create a new project called AbstractDemo.
|
Create the class Person in the src folder.
|
Now, right click on src folder and click new-> class.
|
Type String name; int age; |
Now we will add the fields to represent the name and age of the Person.
|
click on source -> and select generate constructor using fields | Now click on source -> and select generate constructor using fields.
|
Constructor code | This constructor can initialise the values of name and age fields. |
Type
public void showBasicDetails( ) { System.out.println("Name:"+name); System.out.println("Age:"+age); |
We will add a concrete method to this class to print the name and age.
So type public void showBasicDetails( ). Within brackets type, System.out.println within round brackets and within quotes type Name colon plus name semicolon
System.out.println within round brackets and within quotes Age colon plus age semicolon |
Type
public void showDetails( ); |
Now we will add an abstract method to this class.
|
Point to the error |
An error comes up, since we have not yet added the abstract keyword. |
Type the keyword abstract | So now, add the keyword abstract. |
Point to the error
|
Now we can see, another error comes up.
|
Type the keyword abstract | So now, add the keyword abstract to the Person class to make it an abstract class. |
Right click on the default package and create another class called Employee. | Then right click on the default package and create another class called Employee. |
Type extends Person | Now to make this a subclass of Person class, type extends Person. |
Point to the error message | Now we can see an error comes up in the Eclipse IDE.
|
Type
String empid semicolon; int salary;
|
Now create two fields to represent the employee id and employee salary.
|
click on source-> and select generate constructor using fields | Now click on source-> and then select generate constructor using fields.
|
Type
{ System.out.println("Emp id"+empid); System.out.println("Salary:"+salary); }
|
Let us now define the showDetails method.
So type public void showDetails( )
So type System.out.println within quotes Emp id colon plus empid semicolon
|
Next we will see a Student class of the project. | |
Show and highlight the code for Student Class. | I have already created a subclass called Student. |
Highlight the regno and grade fields | There are two fields in the Student class, regno and grade which represent student reg. no and grade. |
Highlight constructor | A constructor is also created inside this class.
|
Highlight the code
{ System.out.println("Student regno:"+regno); System.out.println("Student grade:"+grade); } |
The showDetails method is also implemented in this class.
|
Highlight showDetails() method of Employee class
Highlight showDetails() method of student class |
Now note that the Employee class has its own implementation of showDetails().
|
Right click on the default package, click new-> class and then type name as Demo. | Now right click on the default package.
Click on new-> class and then type name as Demo.
|
Type
Person p =new Person(“John”); |
Now let us try to instantiate the Person class by typing
Person p equals new Person.
|
Point to the error
|
Now we can see an error.
|
Highlight the code line by line
new Employee("John",40,"E267",10000); p1.showBasicDetails(); p1.showDetails();
new Student("Hari",20,"12005",'A'); p2.showBasicDetails(); p2.showDetails(); |
Type the following code as displayed on the screen.
This is represented as Person p2 equals new Student.
|
Right click on the class Demo and then select Run as -> Java Application | Now let us run this Demo program.
|
Highlight code and the output | We can see the output with the basic employee details like name and age.
Student reg no and grade are printed by the showDetails() method. |
This brings us to the end of this tutorial. Let us summarize. | |
Slide 12:
Summary |
In this tutorial we have learnt about
|
Slide 13:
Assignment |
As an assignment-
|
About Project | The video at the following link summarizes the Spoken Tutorial Project.
Please download and watch it. |
About Workshops
|
The Spoken Tutorial Project Team
For more details, please write to us. |
About NMEICT
|
Spoken Tutorial Project is funded by NMEICT, MHRD, Government of India.
More information on this Mission is available at the link shown. |
Contributor slide
|
This script has been contributed by:
Dept. of Information Technology, Amal Jyothi College of Engineering.
|