Difference between revisions of "Java/C3/Abstract-Classes/English"
Nancyvarkey (Talk | contribs) |
Nancyvarkey (Talk | contribs) |
||
(One intermediate revision by one other user not shown) | |||
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 | ||
Line 34: | Line 35: | ||
| 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 | ||
Line 59: | Line 61: | ||
'''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''' method''' that is declared without implementation. | + | | 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 is declared using''' abstract ''' | + | 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'''. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| 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;"| | + | | 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;"| Let us understand the usage of '''Abstract class '''with a sample program. |
|- | |- | ||
− | | style="border: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;"| In Ecilpse IDE a project called '''AbstractDemo''' is created, |
− | |||
− | |||
+ | | 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;"| 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.''' | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
− | | 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;"| Create the''' class Person''' in the '''src''' folder. |
− | + | ||
− | |||
− | |||
− | + | Type | |
− | + | ||
+ | '''String name;''' | ||
− | ''' | + | '''int age;''' |
+ | | 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;"| Now, right click on '''src''' folder and click '''New-'''> '''Class'''. | ||
− | |||
− | |||
− | ''' | + | Type the name of the '''class''' as '''Person''' and press '''Enter'''. |
+ | Now we will add the fields to represent the name and age of the''' Person'''. | ||
− | |||
+ | Type''' String name semicolon.''' | ||
− | |||
− | + | Also type''' int age semicolon.''' | |
− | + | ||
|- | |- | ||
− | | style="border: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;"| Click on''' source ->''' and select''' generate constructor using fields''' |
+ | | 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;"| Now click on''' Source ->''' and select''' Generate constructor using fields. ''' | ||
− | |||
− | |||
− | + | 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;"| | + | | 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;"| '''Constructor''' code |
− | + | | 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;"| 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;"| | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
− | | style="border: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;"| Type |
− | ''' | + | '''public void showBasicDetails( )''' |
− | + | { | |
− | + | ||
+ | System.''out''.println("Name:"+name); | ||
− | + | System.''out''.println("Age:"+age); | |
+ | | 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 about '''concrete method'''. | ||
− | + | A '''Concrete method''' is completely implemented within the curly brackets. | |
− | + | We will add a''' concrete method''' to this '''class''' to print the name and age. | |
− | + | ||
− | + | ||
− | + | Type the following code as displayed on the screen. | |
− | + | ||
+ | This '''method showBasicDetails()''' illustrated here, is an example of '''concrete method'''. | ||
− | |||
− | + | Observe that this '''method''' is implemented completely. | |
− | + | ||
|- | |- | ||
− | | style="border: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;"| Type |
+ | '''public void showDetails( )'''<nowiki>;</nowiki> | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now | + | Point to the error |
+ | | 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;"| Now we will add an '''abstract method''' to this '''class'''. | ||
− | + | So type '''public void showDetails( )''' semicolon. | |
− | |||
− | |||
− | |||
− | + | An error comes up, since we have not yet added the''' abstract keyword. ''' | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
− | | style="border | + | | 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 | + | | 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;"| Point to the error. |
− | + | ||
− | + | Type the '''keyword abstract''' | |
− | + | ||
− | |||
− | + | '''Highlight in the video''' | |
+ | | 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;"| Now we can see another error comes up. | ||
− | |||
− | + | 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.''' | |
− | |||
+ | The '''class Person''' illustrated here is an''' abstract class.''' | ||
− | |||
− | ''' | + | It contains an''' abstract method''' called''' showDetails()'''. |
|- | |- | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''Slide 6:''' |
− | ''' | + | '''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'''. | ||
− | + | 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. | |
|- | |- | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Go back to''' eclipse '''and point the '''showDetails() '''method |
− | + | ||
− | + | ||
− | |||
− | |||
− | |||
− | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| These are done by''' showDetails( ) method''' present in the''' Person class.''' | |
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| | + | |
+ | 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 '''Grade.''' | |
− | + | ||
|- | |- | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| | + | | 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.''' | + | Type''' extends Person''' |
+ | | 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'''. | |
− | + | ||
|- | |- | ||
Line 291: | Line 223: | ||
− | It indicates that, we should provide an implementation to the '''abstract method showDetails( )'''. | + | It indicates that, we should provide an '''implementation''' to the '''abstract method showDetails( )'''. |
Line 308: | Line 240: | ||
− | So type | + | So type''' String empid semicolon''' |
− | + | ||
− | + | and''' int salary semicolon''' | |
|- | |- | ||
| 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;"| click on '''source'''-> and select''' generate constructor using fields''' | | 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;"| click on '''source'''-> and select''' generate constructor using fields''' | ||
− | | 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;"| Now click on ''' | + | | 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;"| Now click on '''Source'''-> and then select''' Generate constructor using fields.''' |
Line 321: | Line 253: | ||
|- | |- | ||
| 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() | ||
Line 337: | Line 268: | ||
| 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'''. | | 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( )''' | + | 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. | ||
− | + | Type the following code as displayed on the screen. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
Line 362: | Line 287: | ||
|- | |- | ||
| 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 | + | | 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. |
|- | |- | ||
Line 379: | Line 304: | ||
{ | { | ||
− | |||
− | System.out.println("Student grade:"+grade); | + | System.''out''.println("Student regno:"+regno); |
+ | |||
+ | 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 method''' is also implemented in this '''class'''. | | 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 402: | Line 328: | ||
|- | |- | ||
| 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 ''' | + | Click on '''New'''-> '''Class''' and then type name as''' Demo. ''' |
− | Inside this '''class''' | + | 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 417: | Line 343: | ||
Person p =new Person(“John”); | Person p =new Person(“John”); | ||
+ | |||
+ | Point to the error | ||
+ | |||
+ | |||
+ | Remove the line | ||
| 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 422: | Line 353: | ||
− | Within brackets and double quotes | + | Within brackets and double quotes type '''John''' and put a semicolon. |
− | |||
− | |||
− | + | Now we can see an error. | |
− | + | ||
− | + | ||
Line 466: | Line 393: | ||
− | In the first line, we are passing the values of different | + | In the first line, we are passing the values of different arguments. |
− | |||
− | + | '''John''' is passed as '''Employee name'''. | |
− | + | '''40''' as the value of '''age.''' | |
+ | |||
+ | '''E267''' as the value of '''Employee ID''' and | ||
+ | |||
+ | '''10000''' as the value of '''Employee salary.''' | ||
Line 481: | Line 411: | ||
− | Similarly | + | Similarly instantiate the''' Person class''' using the''' Student class'''. |
+ | |||
This is represented as '''Person p2 equals new Student.''' | This is represented as '''Person p2 equals new Student.''' | ||
Line 488: | Line 419: | ||
Now we are passing the values of different '''arguments'''. | Now we are passing the values of different '''arguments'''. | ||
− | |||
− | + | We can invoke the''' showBasicDetails() method '''and''' showDetails()''' '''method '''using the '''object''' as shown. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
Line 517: | Line 438: | ||
− | Other | + | Other employee details like''' employee ID '''and '''salary '''are printed by the''' showDetails() method'''. |
− | Similarly | + | 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() method'''. |
− | + | ||
− | '''Student reg no '''and '''grade''' are printed by the''' showDetails() method'''. | + | |
|- | |- | ||
Line 532: | Line 451: | ||
|- | |- | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''Slide | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''Slide 7:''' |
'''Summary''' | '''Summary''' | ||
Line 542: | Line 461: | ||
|- | |- | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''Slide | + | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''Slide 8:''' |
'''Assignment''' | '''Assignment''' | ||
− | | style="border:1pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| As an assignment | + | | 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 568: | Line 497: | ||
* Conducts workshops using spoken tutorials | * Conducts workshops using spoken tutorials | ||
* Gives certificates on passing the online tests | * Gives certificates on passing the online tests | ||
+ | |||
For more details, please write to us. | For more details, please write to us. | ||
Line 573: | Line 503: | ||
|- | |- | ||
| 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 585: | Line 517: | ||
| 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. | ||
Latest revision as of 14:41, 12 January 2017
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.
|
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.
String name; int age; |
Now, right click on src folder and click New-> Class.
|
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); |
Next we will see about concrete method.
We will add a concrete method to this class to print the name and age. Type the following code as displayed on the screen.
|
Type
public void showDetails( );
|
Now we will add an abstract method to this class.
|
Type the keyword abstract | So now add the keyword abstract. |
Point to the error.
Type the keyword abstract
|
Now we can see another error comes up.
|
Slide 6:
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 eclipse 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 Grade. |
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.
|
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.
and int salary semicolon |
click on source-> and select generate constructor using fields | Now click on Source-> and then select Generate constructor using fields.
|
Type
public void showDetails() { System.out.println("Emp id"+empid); System.out.println("Salary:"+salary); }
|
Let us now define the showDetails method.
So type public void showDetails( ). Inside this method, we need to print the employee details. Type the following code as displayed on the screen.
|
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 grade:"+grade); } |
The showDetails method is also implemented in this class.
It prints the values of Student Reg. Number and grade
|
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.
|
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.
40 as the value of age. E267 as the value of Employee ID and 10000 as the value of Employee salary.
|
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.
|
This brings us to the end of this tutorial. Let us summarize. | |
Slide 7:
Summary |
In this tutorial we have learnt about
|
Slide 8:
Assignment |
As an assignment
“Car is running on 4 wheels”
“Bike is running on 2 wheels”
|
About Project
|
The video at the following link summarizes the Spoken Tutorial Project.
|
About Workshops
|
The Spoken Tutorial Project Team
|
About NMEICT
|
Spoken Tutorial Project is funded by NMEICT, MHRD, Government of India.
|
Contributor slide
|
This script has been contributed by:
Dept. of Information Technology, Amal Jyothi College of Engineering.
|