module inheritance;

// ****** Inheriting from Classes: Implementation Inheritance  ******
import std.stdio: writeln;

class Person {
	string id;

	void speak() {
		writeln("Hello, world!");
	}
}

class John: Person {
	// inherits: string id;

	this(string s) {
		id = s; 
	}

	// redifining the inherited speak function of Person
	override void speak() {
		super.speak();	// calling the default(Person's) speak function
		writeln("Hi! My id is: ", id, ".");
	}
}

class Anna: Person {
	// inherits: string id;

	this(string s) {
		id = s; 
	}

	// Anna inherits the default implementation
}