<< Chapter < Page Chapter >> Page >
These learning objects concern inheritance in Java. One class can be derived from another, inheriting its fields and methods.

Learning objects for inheritance

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:

  • Variable are declared and assigned the null value.
  • Memory is allocated for each object's fields and are given defaultvalues. For a subclass, these fields include all fields of its superclasses.
  • In the constructors, a subclass calls 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.

Inheriting fields

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;    } }

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Learning objects for java (with jeliot). OpenStax CNX. Dec 28, 2009 Download for free at http://cnx.org/content/col10915/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Learning objects for java (with jeliot)' conversation and receive update notifications?

Ask