]> git.llucax.com Git - z.facultad/75.31/presentacion.git/commitdiff
Ejemplo de herencia.
authorLeandro Lucarella <llucax@gmail.com>
Mon, 13 Jun 2005 01:26:21 +0000 (01:26 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Mon, 13 Jun 2005 01:26:21 +0000 (01:26 +0000)
ejemplos/herencia.d [new file with mode: 0644]

diff --git a/ejemplos/herencia.d b/ejemplos/herencia.d
new file mode 100644 (file)
index 0000000..6bd7ef0
--- /dev/null
@@ -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;
+}