blob: be4119d51d38b4dc5072962b2335a4ed56e996c9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
using GLib;
interface Maman.Ibaz : Object {
public abstract void do_action ();
public abstract void do_virtual_action ();
protected void protected_mixin_1() {
stdout.puts("protected_mixin_1\n");
protected_mixin_2();
}
protected void protected_mixin_2() {
stdout.puts("protected_mixin_2\n");
}
public void public_mixin() {
protected_mixin_1();
protected_mixin_2();
}
}
class Maman.Baz : Object, Ibaz {
public void do_action () {
stdout.printf (" 2");
}
public virtual void do_virtual_action () {
stdout.printf (" 4");
}
public void do_mixin() {
public_mixin();
}
}
class Maman.SubBaz : Baz {
public override void do_virtual_action () {
stdout.printf (" 6");
}
public static int main_func () {
stdout.printf ("Interface Test: 1");
Ibaz ibaz = new Baz ();
ibaz.do_action ();
ibaz.public_mixin();
(ibaz as Baz).do_mixin();
stdout.printf (" 3");
ibaz.do_virtual_action ();
stdout.printf (" 5");
Ibaz subbaz = new SubBaz ();
subbaz.do_virtual_action ();
stdout.printf (" 7\n");
subbaz.public_mixin();
(subbaz as Baz).public_mixin();
return 0;
}
}
void main () {
Maman.SubBaz.main_func ();
}
|