0% found this document useful (0 votes)
13 views19 pages

Chapter 5

The document discusses abstract classes and methods in computer programming. It defines what abstract classes and methods are, provides examples of creating an abstract superclass called Employee, and shows how to extend concrete classes from the abstract superclass and implement abstract methods.

Uploaded by

alqrshyhsn82
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views19 pages

Chapter 5

The document discusses abstract classes and methods in computer programming. It defines what abstract classes and methods are, provides examples of creating an abstract superclass called Employee, and shows how to extend concrete classes from the abstract superclass and implement abstract methods.

Uploaded by

alqrshyhsn82
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

Computer Programming (2)

Chapter 5

Abstract Class
1. Abstract Class
2. Abstract Method
3. Example “Creating Abstract Superclass: Employee class”
4. Extending Concrete Classes
5. Implementing an Abstract Method

Contents
Recommended Reading
1. Java Abstract Classes
https://www.w3schools.com/java/java_abstract.asp
• Abstract Class
Abstract Class
• Sometimes, it does NOT make sense to create objects from specific
classes.

• In such case, these classes should be created as abstract.

• An abstract class can only be used to derive other classes; you cannot
create objects from an abstract class

• An abstract class must have at least one abstract method.

8-6
Abstract Method

• An abstract method has a complete method heading, to which has been


added the modifier abstract.

• It has no method body and ends with a semicolon in place of its body.
public abstract long getSerNumber();

• An abstract method cannot be private.

• An abstract class can have any number of abstract and/or fully defined
methods.

• A class that has no abstract methods is called a concrete class.


Abstract Class (Cont’d)
• Attempting to instantiate an object of an abstract class is a compilation error.
• Example:

abstract class Shape {



}

Shape sh = new Shape();


Abstract Class (Cont’d)
• Failure to implement a superclass’s abstract methods in a subclass is a compilation
error unless the subclass is also declared abstract.
• Example:

abstract class Shape {


public abstract void drawHere();
}

class Rectangle extends Shape {


// The method drawHere() is NOT implemented!

}
Example

• UML Inheritance Diagrams for Abstract Classes


Creating Abstract Superclass: Employee class

• abstract superclass Employee

• earnings is declared abstract


• No implementation can be given for earnings in the Employee abstract class

• An array of Employee variables will store references to subclass objects


• earnings method calls from these variables will call the appropriate version of the
earnings method
The Employee Class Hierarchy
Abstract Class Employee: Outline
// Employee abstract superclass.

public abstract class Employee {


private String firstName;
private String lastName;
private String socialSecurityNumber;

// three-argument constructor
public Employee(String first, String last, String ssn ) {
firstName = first;
lastName = last;
socialSecurityNumber = ssn;
} // end three-argument Employee constructor
Abstract Class Employee: Outline (Cont’d)

public void setFirstName(String first) { firstName = first; }


public String getFirstName() { return firstName; }
public void setLastName( String last ) { lastName = last; }
public String getLastName() { return lastName; }
public void setSocialSecurityNumber( String ssn ) {
socialSecurityNumber = ssn;
}
public String getSocialSecurityNumber() {
return socialSecurityNumber; }
public abstract double earnings(); // no implementation here
} // end abstract class Employee
Extending Concrete Classes

public class SalariedEmployee extends Employee {


private double weeklySalary;

// calculate earnings; override abstract method earnings in Employee
public double earnings()
{
return getWeeklySalary();
} // end method earnings

}
Extending Concrete Classes (Cont’d)

public class CommissionEmployee extends Employee {


private double grossSales; // gross weekly sales
private double commissionRate; // commission percentage…
// calculate earnings; override abstract method earnings in Employee
public double earnings()
{
return getCommissionRate() * getGrossSales();
} // end method earnings

}
Extending Concrete Classes (Cont’d)

public class HourlyEmployee extends Employee {


private double wage; // wage per hour
private double hours; // hours worked for week
// calculate earnings; override abstract method earnings in Employee
public double earnings()
{
if ( getHours() <= 40 ) // no overtime
return getWage() * getHours();
else
return 40 * getWage() + ( getHours() - 40 ) * getWage() * 1.5;
} // end method earnings
Implementing an Abstract Method
• Define the speak() method as abstract in the superclass Animal.

public abstract class Animal {


protected String kind; // Cow, pig, cat, etc.
public Animal() { }
public String toString() {
return "I am a " + kind + " and I go " + speak();
}
public abstract String speak(); // Abstract method
}

• Implement speak() differently in each subclass.

public class Cat extends Animal { public class Cow extends Animal {
public Cat() { public Cow() {
kind = "cat"; kind = "cow";
} }
public String speak() { public String speak() {
return "meow"; return "moo";
} }
} }
Thank You

You might also like