public abstract Animal
{
public void eat(Food food)
{
// do something with food....
}
public void sleep(int hours)
{
try
{
// 1000 milliseconds * 60 seconds * 60 minutes * hours
Thread.sleep ( 1000 * 60 * 60 * hours);
}
catch (InterruptedException ie) { /* ignore */ }
}
public abstract void makeNoise();
}
Note that the abstract keyword is used to denote both an abstract method,
and an abstract class. Now, any animal that wants to be instantiated (like a dog
or cow) must implement the makeNoise method - otherwise it is impossible to
create an instance of that class. Let's look at a Dog and Cow subclass that
extends the Animal class.
public Dog extends Animal
{
public void makeNoise() { System.out.println ("Bark! Bark!"); }
}
public Cow extends Animal
{
public void makeNoise() { System.out.println ("Moo! Moo!"); }
}
Now you may be wondering why not declare an abstract class as an interface,
and have the Dog and Cow implement the interface. Sure you could - but you'd
also need to implement the eat and sleep methods. By using abstract classes, you
can inherit the implementation of other (non-abstract) methods. You can't do
that with interfaces - an interface cannot provide any method implementations.
No comments:
Post a Comment