Java/C3/Abstract-Classes/English

From Script | Spoken-Tutorial
Revision as of 09:59, 24 December 2015 by Nancyvarkey (Talk | contribs)

Jump to: navigation, search

Title of script: Abstract Classes

Author: Joms Antony

Keywords: Abstract Methods, Concrete Methods, Abstract Classes, Concrete Classes, Inheritance, Method Implementation, Video tutorial, java tutorial


Visual Cue
Narration
Slide 1: Welcome to the Spoken Tutorial on Abstract Classes.
Slide 2:

Learning Objectives


In this tutorial we will learn about:
  • Abstract Methods and Concrete Methods
  • Abstract Classes and Concrete Classes and
  • How to use Abstract Classes
Slide 3:

Software Requirements


For this tutorial, I am using
  • Ubuntu 12.04
  • JDK 1.7 and
  • Eclipse 4.3.1
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.


It is declared using abstract keyword.


There should not be opening and closing parenthesis for this method.

Slide 6:

Abstract Method

Example:

Highlight the method and abstract keyword

The method showDetails() illustrated here, is an example of abstract method.


Note that this method is declared using the abstract keyword, with no current implementation.

Next we will see about concrete method.
Slide 7:

Concrete Method:

Example:


A Concrete method is completely implemented within the curly brackets.


This method showBasicDetails() illustrated here is an example of concrete method.


Observe that this method is implemented completely.

Now we will learn about abstract class with an example.
Slide 8:

Abstract Class:

An abstract class usually contains at least one abstract method.


Abstract methods can be added only to abstract classes.

Slide 9:

Abstract Class - Example


The class Person illustrated here is an abstract class.


It contains an abstract method called showDetails().


It can also contain variables and other concrete methods.

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


Switch to Slide 10


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.


The class Employee illustrated here, is a concrete class.


All the methods inside this class including showDetails() are concrete.

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.


Inside this project, we will create the necessary classes to demonstrate the usage of Abstract class.

Create the class Person in the src folder.


Now, right click on src folder and click new-> class.


Type the name of the class as Person and press Enter.

Type

String name;

int age;

Now we will add the fields to represent the name and age of the Person.


Type String name semicolon.


Also type int age semicolon.

click on source -> and select generate constructor using fields Now click on source -> and select generate constructor using fields.


Delete the super keyword from the generated code.

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


Also type

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.


So type public void showDetails( ) semicolon

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.


This is because, abstract methods can be added only to abstract classes.

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.


It indicates that, we should provide an implementation to the abstract method showDetails( ).


We will do it a little later.

Type

String empid semicolon;

int salary;


Now create two fields to represent the employee id and employee salary.


So type

  • String empid semicolon
  • and int salary semicolon
click on source-> and select generate constructor using fields Now click on source-> and then select generate constructor using fields.


This constructor can initialise the values of name, age, empid and salary.

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.

So type

System.out.println within quotes Emp id colon plus empid semicolon


System.out.println within quotes Salary colon plus salary semicolon


Note that the error disappears, once the showDetails() method is implemented.

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.


This constructor can be used to initialize the values for name, age, regno and grade.

Highlight the code


public void showDetails()

{

System.out.println("Student regno:"+regno);

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().


And the Student 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.


Inside this class, we will have the main method,


So type main and then press Ctrl space to generate the main method.

Type

Person p =new Person(“John”);

Now let us try to instantiate the Person class by typing

Person p equals new Person.


Within brackets and double quotes, type John and put a semicolon.

Point to the error


Remove the line

Now we can see an error.


This is because the Person class is abstract and it cannot be instantiated.


Let's remove this line.

Highlight the code line by line


Person p1=

new Employee("John",40,"E267",10000);

p1.showBasicDetails();

p1.showDetails();


Highlight the code line by line


Person p2=

new Student("Hari",20,"12005",'A');

p2.showBasicDetails();

p2.showDetails();

Type the following code as displayed on the screen.


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.

  • 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.


Now we can invoke the concrete method in the Person class as p1.showBasicDetails()


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()

Right click on the class Demo and then select Run as -> Java Application Now let us run this Demo program.


So right click on the class Demo and then select Run as -> Java Application

Highlight code and the output We can see the output with the basic employee details like name and age.


These are printed by showBasicDetails() method.


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.


Other details of the student like

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
  • Abstract Methods and Concrete Methods
  • Abstract Classes and Concrete Classes and
  • How to create and use Abstract Classes
Slide 13:

Assignment

As an assignment-
  1. Create an abstract class Vehicle which contains an abstract method run()
  2. Create a subclass Car which extends the Vehicle class and implements the run method that prints “Car is running on 4 wheels”
  3. Also create asubclass Bike which again extends the Vehicle class and implements the run method that prints “Bike is running on 2 wheels”
  4. Also create a Demo class containing the main method to verify the results.
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
  • Conducts workshops using spoken tutorials
  • Gives certificates on passing the online tests

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.


This is Priya from IIT Bombay signing off. Thank you for joining.

Contributors and Content Editors

Nancyvarkey, Priyacst