Inheritance allows common functionality to be inherited by sub classes. This helps reduce code duplication.
As you can see the extends keyword is is required for a class to inherit from a base class. A class which extends another gets access to all the protected and public variables and functions.
It is possible to override inherited members and methods, by this it means that a function in a super class can be replaced by the inheriting class.
A example of this is shown above where Article overrides the IsLoggedIn function, so that it always returned true.
This type of class is used specifically for the purposes of inheritance a class marked as abstract can't be instantiated. Furthermore methods can be marked as abstract which forces the inheriting classes to implement them to an equal or a higher visibility.
As shown above the IsHTTPSPage() function had to be implemented by base otherwise a error would have been thrown.