回答編集履歴

4

微修正

2016/04/06 02:43

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- 結局、どうしても残る問題はダイヤモンド継承が引き起こす問題す。
11
+ 結局、ダイヤモンド継承が引き起こす問題が残ってしまうと思います。
12
12
 
13
13
 
14
14
 

3

微修正

2016/04/06 02:43

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
 
15
- #ダイヤモンド継承
15
+ ###ダイヤモンド継承
16
16
 
17
17
  例えばC#では全てのクラスがobjectクラスを継承しています。ユーザが定義したクラスも暗黙的に継承しています。その御蔭で、objectがToString()を持っているので、どのクラスもToString()を持ってますのでなかなか便利です。
18
18
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- #ダイヤモンド継承の問題
29
+ ###ダイヤモンド継承の問題
30
30
 
31
31
  そして、objectがstatusというプロパティを持っていたとします。(実際にはないですが。)
32
32
 
@@ -36,7 +36,7 @@
36
36
 
37
37
 
38
38
 
39
- #多重継承してもダイヤモンド継承にならないようにする?
39
+ ###多重継承してもダイヤモンド継承にならないようにする?
40
40
 
41
41
  > ・多重継承する際、スーパークラスそれぞれに優先順位は付けられないのでしょうか?
42
42
 

2

追記

2016/04/06 02:38

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -55,3 +55,21 @@
55
55
  実際にそのような言語を作って、使うためのノウハウを積めばもしかすると使えるアイデアなのかも知れないですが、個人的にはパニックが酷くて使えない言語になりそうな予感がします。
56
56
 
57
57
  といいますか、世の中には頭の良い人が多数いますし、多重継承の問題は多くの人が取り組んでいますので、既に実際に実装し、役に立たないことが確認されているからメジャーになっていないということかも知れません。
58
+
59
+
60
+
61
+ ---
62
+
63
+ 【追記】
64
+
65
+ 継承はis_a関係ですので、fooはobjectの一種であり、barとbazもそうです。
66
+
67
+ 従って、bazはobjectの一種として振る舞います。そして、bazはbarの一種としても振る舞います。
68
+
69
+ 優先順位を付けた場合、bazはfooのobjectの一種として振る舞うが、barのobjectとしては振る舞わない、でも、barとしては振る舞うことになりますね。
70
+
71
+ 「継承」という概念ではない、何か他のパラダイムになりそうです。
72
+
73
+
74
+
75
+

1

微修正

2016/04/06 02:37

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  #ダイヤモンド継承
16
16
 
17
- 例えばC#では全てのクラスがobjectクラスを継承しています。ユーザが定義したクラスも暗黙的に継承しています。その御蔭で、objectがToString()を持っているので、どのクラスからもToString()を呼び出せます。
17
+ 例えばC#では全てのクラスがobjectクラスを継承しています。ユーザが定義したクラスも暗黙的に継承しています。その御蔭で、objectがToString()を持っているので、どのクラスもToString()を持ってますのでなかなか便利です
18
18
 
19
19
 
20
20