Beginning Abstract Classes in Java
Java | Posted by: Rob on December 16th, 2008
At first, understanding abstract classes and their purpose can be a bit tricky. It's really not all that complex, though. Abstract classes basically enforces rules on child classes, and increases code reusability. Here are some rules that abstract classes (and their child classes) follow:
- An abstract class cannot be directly instantiated, - a child class extend the abstract class and the child class can be instantiated.
- An abstract class with only abstract method signatures should be an interface - not an abstract class. When using an abstract class - fully implement a common method which all child classes share into the abstract class.
- Classes which extend an abstract class must implement the abstract methods of the parent abstract class.
- Child classes of an abstract class can include more methods that aren't declared in the abstract class.
- The abstract methods declared in an abstract class, should differ in implementation in all the child classes. Otherwise they could have been fully implemented in the abstract class.
Below is a very simple example of using abstract classes in Java
Enemy Class
public abstract class Enemy
{
protected String name;
abstract void slam(Enemy e);
abstract void punch(Enemy e);
public String toString() {
return "My name is " + name + " and I am an enemy";
}
public void eat() {
System.out.println("I am eating... Ohm nom nom nom...");
}
}
Walrus Class
public class Walrus extends Enemy
{
public Walrus() {
this.name = "Walrus";
}
public void slam(Enemy e) {
System.out.println("I am slamming " + e.name);
}
public void punch(Enemy e) {
System.out.println("I am punching " + e.name);
}
}
Platypus Class
public class Platypus extends Enemy
{
public Platypus() {
this.name = "Platypus";
}
public void slam(Enemy e) {
System.out.println("I am a platypus, and I am slamming " + e.name);
}
public void punch(Enemy e) {
System.out.println("I am a platypus I am punching " + e.name);
}
public void swim() {
System.out.println("I am swimming...");
}
}
Driver
public class driver
{
public static void main(String[] args) {
Walrus walrus = new Walrus();
Platypus plat = new Platypus();
walrus.slam(plat);
plat.punch(walrus);
System.out.println(plat);
System.out.println(walrus);
}
}



zerogpm - December 16th, 2008 @ 11:19pm reply
smarthasan - March 8th, 2009 @ 8:37am reply