Inheritance
Abstract and final keywords
abstract keyword
How to work with the abstract keyword
- An abstract class is a class that can be inherited by other classes but that you can't use to create an object.
- To declare an abstract class, code the abstract keyword in the class declaration.
- An abstract class can contain fields, constructors, and methods just like other superclasses. It can also contain abstract methods.
- To create an abstract method, you code the abstract keyword in the method declaration and you omit the method body.
- Abstract methods cannot have private access. However, they may have protected or default access (no access modifier).
- When a subclass inherits an abstract class, all abstract methods in the abstract class must be overridden in the subclass.
- Any class that contains an abstract method must be declared as abstract.
An abstract Product class
public abstract class Product
{
private String code;
private String description;
private double price;
// regular constructors and methods for instance
// variables
public String toString()
{
return "Code: " + code + "\n" +
"Description: " + description + "\n" +
"Price: "
+ this.getFormattedPrice() + "\n";
}
abstract String getDisplayText(); // an abstract method
}
A class that inherits the abstract Product class
public class Book extends Product
{
private String author;
// regular constructor and methods for the Book class
public String getDisplayText()
// implement the abstract method
{
return super.toString() +
"Author: " + author + "\n";
}
}