<< Chapter < Page | Chapter >> Page > |
Concept Inheritance is an important technique for structuring object-oriented programs. Given a class (called a superclass ) it can be extended to a subclass . The subclass inherits all the fields of the superclass and it can addadditional fields. The subclass inherits methods of the superclass and it can add new methods or override the inherited methods with its own versions.
These source code of these learning objects can be found in inheritance.zip .
LO | Topic | Java Files (.java) | Prerequisites |
"Inheriting fields" | Inheriting fields | Inheritance01 | |
"Inheriting methods" | Inheriting and overriding methods | Inheritance02 | 1 |
"Dynamic dispatching" | Dynamic dispatching | Inheritance03 | 2 |
"Downcasting" | Downcasting | Inheritance04 | 3 |
"Heterogeneous data structures" | Heterogeneous data structures | Inheritance05 | 4 |
"Abstract classes" | Abstract classes | Inheritance06 | 5 |
"Equals" | Equals | Inheritance07A, B, C | 2 |
"Clone" | Clone | Inheritance08 | 2 |
"Overloading vs. overriding" | Overloading vs. overriding | Inheritance09 | 3 |
Program The running example is a framework for the simulation of
moving particles. There is a class
Particle
with a field
position
that is updated by the method
newPosition
.
There are three subclasses:
AParticle
is derived directly from
Particle
and adds the field
spin
.
The method
newPosition
is overridden.BParticle
is derived directly from
Particle
and adds the field
charge
.
The method
newPosition
is
not overridden.CParticle
is derived directly from
BParticle
and thus
indirectly from
AParticle
.
It adds the field
strange
; the method
newPosition
is overridden.For each program the following initialization is performed and will not be explicitly mentioned for each learning object; instead, the step“the objects are created” will be listed:
super
to initialize
the fields declared by the superclasses and then initializes its own fields.
Tip: Use
Animation / Run Until ...
to skip over the animation
of the initialization.
Tip: Several of the LOs will ask you to check that a certain version of a method is called. This can be done by looking at the source code in the left panel:the method called is highlighted in blue.
Concept Subclasses inherit all the fields of its superclasses; they can also add fields of their own.
Program: Inheritance01.java
// Learning Object Inheritance01
// inheriting fieldsclass Particle {
int position;
Particle(int p) { position = p;
}
void newPosition(int delta) { position = position + delta;
}}
class AParticle extends Particle {
double spin;
AParticle(int p, double s) { super(p);
spin = s; }
void newPosition(int delta) {
if (spin < delta)
position = position + delta; }
}
class BParticle extends Particle { int charge;
BParticle(int p, int c) {
super(p); charge = c;
}}
class CParticle extends BParticle {
boolean strange;
CParticle(int p, int c, boolean s) { super(p, c);
strange = s; }
void newPosition(int delta) {
if (strange) position = position * charge;
}}
class Inheritance01 {
public static void main(/*String[] args*/) {
Particle p = new Particle(10); AParticle a = new AParticle(20, 2.0);
BParticle b = new BParticle(30, 3); CParticle c = new CParticle(40, 4, true);
int pPosition = p.position;
int aPosition = a.position; double aSpin = a.spin;
int bPosition = b.position; int bCharge = b.charge;
int cPosition = c.position; int cCharge = c.charge;
boolean cStrange = c.strange; }
}
Notification Switch
Would you like to follow the 'Learning objects for java (with jeliot)' conversation and receive update notifications?