The fundamental part of most classes is its constructor, which sets up each instance's initial state and handles any parameters that were passed when calling new.
It's defined in a class block as though you're defining a method named constructor, though it's actually handled as a special case.
A small thing to note is that a class constructor cannot be made static via the static keyword, as described below
for other methods.
Inheritance works just like it does in other object-oriented languages: methods defined on the superclass are accessible in the extending subclass.
If the subclass declares its own constructor then it must invoke the parents constructor via super() before it can
Static methods and properties are defined on the class/constructor itself, not on instance objects. These are specified
in a class definition by using the static keyword.
We can see that static properties are not defined on object instances:
However, they are defined on subclasses:
Methods can be defined in classes to perform a function and optionally return a result.
They can receive arguments from the caller.