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: https://www.webreference.com/js/column110/4.html