Introduction to Classes in JavaScript
Inheritance
Given ourPerson
class above, let's define the Professor
subclass.
class Professor extends Person { teaches; constructor(name, teaches) { super(name); this.teaches = teaches; } introduceSelf() { console.log( `My name is ${this.name}, and I will be your ${this.teaches} professor.` ); } grade(paper) { const grade = Math.floor(Math.random() * (5 - 1) + 1); console.log(grade); } }
We use the extends
keyword to say that this class inherits from another class.
The Professor
class adds a new property teaches
, so we declare that.
Since we want to set teaches
when a new Professor
is created, we define a constructor, which takes the name
and teaches
as arguments. The first thing this constructor does is call the superclass constructor using super()
, passing up the name
parameter. The superclass constructor takes care of setting name
. After that, the Professor
constructor sets the teaches
property.
Note: If a subclass has any of its own initialization to do, it must first call the superclass constructor using super()
, passing up any parameters that the superclass constructor is expecting.
We've also overridden the introduceSelf()
method from the superclass, and added a new method grade()
, to grade a paper (our professor isn't very good, and just assigns random grades to papers).
With this declaration we can now create and use professors:
const walsh = new Professor("Walsh", "Psychology"); walsh.introduceSelf(); // 'My name is Walsh, and I will be your Psychology professor' walsh.grade("my paper"); // some random grade