Inheritance
Inheritance is a very common aspect of Object-Oriented Programming Languages. It allows you to define properties or behavior in a single class, and inherit them in another class without having to redefine them. This is shown in the following example:
Person.dyvil
:class Person
{
let name: String
let age: int
func greet() -> void = print "Hello, \(name)!"
// constructors omitted
}
Student.dyvil
:class Student extends Person
{
let email: String
func send(message: String) -> void = ...
// constructors omitted
}
The
Student
class extends
, i.e. inherits from the Person
class. This means that a Student
is also a Person
, and also has a name
and an age
.let student = Student(name: "John", age: 22, email: "[email protected]")
let person = Person(name: "Alex", age: 32)
student.greet() // prints 'Hello, John!' (1)
print student.age // prints '22' (2)
print student.email // prints '[email protected]'
student.send("Hi")
person.greet() // prints 'Hello, Alex!'
print person.age // prints '32'
print person.email // error, because Person does not have an email field
person.send("!!!") // error, because Person does not have a send(String) method
Notice how the last two statements cause a compiler error:
person
is not a Student
, and thus does not necessarily have an email
property. Neither do they have the sendMail
method available for use.The statements
(1)
and (2)
however, are perfectly legal. The Student
inherits the age
property as well as the greet
method from its parent class Person
.Last modified 4yr ago