Class relationships
There are two primary types of relationships between classes in Java:
– aggregation (referred as has-a) – inheritance (referred as is-a)
Inheritance
The inheritance relationship is also known as:
Parent/Child or Superclass/Subclass. An Audi TT is-a car. A Smart Car is-a car. – written as is-a – via the extends keyword
Subclasses inherit the properties (attributes and operations) of their superclass.
To provide specialisations, subclasses override methods that they inherit from the superclass
Polymorphism
Using a single definition (superclass) with different types (subclass).
This is what allows us to treat a Turtle or a Rabbit as a Creature. Creature c = new Rabbit(); // Also allowed!
We can now create arrays that contain both Rabbit and Turtle objects!
Creature cArray[] = new Creature[7];
Abstract:
The compiler will not let you instantiate an abstract class.
– Nobody can EVER make an instance of it. – The only use it has is in being extended.
a subclass must implement ALL abstract methods from its superclass (or be declared abstract).
(子类重写抽象类中的所有抽象方法,或声明子类也是抽象类)