Cambio pedorro.
[z.facultad/75.31/presentacion.git] / ejemplos / herencia.d
1
2 interface Interface
3 {
4         void hacer();
5 }
6
7 class Base
8 {
9         char[] nombre;
10         this()
11         {
12                 nombre = "unknown";
13                 printf("Base::this(%.*s)\n", nombre);
14         }
15         this(char[] n)
16         {
17                 nombre = n;
18                 printf("Base::this(%.*s)\n", n);
19         }
20         ~this()
21         {
22                 printf("Base::~this(%.*s)\n", nombre);
23         }
24 }
25
26 class Sub1: Base
27 {
28         this(char[] n)
29         {
30                 super(n);
31                 printf("Sub1::this(%.*s)\n", nombre);
32         }
33         ~this()
34         {
35                 printf("Sub1::~this(%.*s)\n", nombre);
36         }
37 }
38
39 class Sub2: Base, Interface
40 {
41         this(char[] n)
42         {
43                 printf("Sub2::this(%.*s)\n", nombre);
44         }
45         ~this()
46         {
47                 printf("Sub2::~this(%.*s)\n", nombre);
48         }
49         void hacer()
50         {
51                 printf("Sub2::hacer(%.*s)\n", nombre);
52         }
53 }
54
55 class Otro: Interface
56 {
57         void hacer()
58         {
59                 printf("Otro::hacer()\n");
60         }
61 }
62
63 void hacer(Interface i)
64 {
65         i.hacer();
66 }
67
68 int main()
69 {
70         printf("\nBase\n");
71         new Base("base");
72         printf("\nSub1\n");
73         new Sub1("sub1");
74         printf("\nSub2\n");
75         Sub2 s2 = new Sub2("sub2");
76         Otro o = new Otro;
77         o.print();
78         printf("\nHacer\n");
79         hacer(s2);
80         hacer(o);
81         printf("----------------------------------------\n");
82         return 0;
83 }