From bb4150786199a6e3a5dc8af819cf96b3c045c10c Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Mon, 13 Jun 2005 01:26:21 +0000 Subject: [PATCH 1/1] Ejemplo de herencia. --- ejemplos/herencia.d | 81 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 ejemplos/herencia.d diff --git a/ejemplos/herencia.d b/ejemplos/herencia.d new file mode 100644 index 0000000..6bd7ef0 --- /dev/null +++ b/ejemplos/herencia.d @@ -0,0 +1,81 @@ + +interface Interface +{ + void hacer(); +} + +class Base +{ + char[] nombre; + this() + { + nombre = "unknown"; + printf("Base::this(%.*s)\n", nombre); + } + this(char[] n) + { + nombre = n; + printf("Base::this(%.*s)\n", n); + } + ~this() + { + printf("Base::~this(%.*s)\n", nombre); + } +} + +class Sub1: Base +{ + this(char[] n) + { + super(n); + printf("Sub1::this(%.*s)\n", nombre); + } + ~this() + { + printf("Sub1::~this(%.*s)\n", nombre); + } +} + +class Sub2: Base, Interface +{ + this(char[] n) + { + printf("Sub2::this(%.*s)\n", nombre); + } + ~this() + { + printf("Sub2::~this(%.*s)\n", nombre); + } + void hacer() + { + printf("Sub2::hacer(%.*s)\n", nombre); + } +} + +class Otro: Interface +{ + void hacer() + { + printf("Otro::hacer()\n"); + } +} + +void hacer(Interface i) +{ + i.hacer(); +} + +int main() +{ + printf("\nBase\n"); + new Base("base"); + printf("\nSub1\n"); + new Sub1("sub1"); + printf("\nSub2\n"); + Sub2 s2 = new Sub2("sub2"); + printf("\nHacer\n"); + hacer(s2); + hacer(new Otro); + printf("----------------------------------------\n"); + return 0; +} -- 2.43.0