JScript .NET, Part IV: Inheritance: Abstract Classes - Doc JavaScript | WebReference

JScript .NET, Part IV: Inheritance: Abstract Classes - Doc JavaScript


JScript .NET, Part IV: Inheritance

Abstract Classes

You need to mark class members that have no implementation with the abstract modifier. You also need to label a class containing such members as abstract. A class with abstract members cannot be instantiated with the new operator. You can derive both abstract and non-abstract classes from an abstract base class. Interfaces are implicitly abstract. They cannot be instantiated, and must be implemented by a non-abstract class. Therefore, you cannot mark interfaces and their members as abstract. You may not combine the abstract modifier with the other inheritance modifier, final (see Page 6). You may not combine either of these inheritance modifiers (abstract and final) with the static modifier.

The following example demonstrates the use of abstract classes. The polygon class is a generic class for all types of polygons. We define it as an abstract class because we want the implementation to be provided by the rectangle and square classes that extend the polygon class:

abstract class polygon {
  abstract function printCharacteristic();
}
class rectangle extends polygon {
  function printCharacteristic() {
    print("All my angles are 90 degrees and my
      opposite sides are equal");
  }
}
class square extends polygon {
  function printCharacteristic() {
    print("All my angles are 90 degrees and all
      my sides are equal");
  }
}

Let's define now two variables, shape1 and shape2, of type polygon, and instantiate them with the new operator:

var shape1 : polygon = new rectangle;
var shape2 : polygon = new square;

Let's print now their respective characteristics:

shape1.printCharacteristics();
shape2.printCharacteristics();

You should get the following statements:

All my angles are 90 degrees and my opposite sides are equal
All my angles are 90 degrees and all my sides are equal

Next: How to override base class methods


Produced by Yehuda Shiran and Tomer Shiran
All Rights Reserved. Legal Notices.
Created: May 20, 2002
Revised: May 20, 2002

URL: http://www.webreference.com/js/column110/4.html