回答編集履歴
9
意図を外していたものをコードブロックでたたむ
answer
CHANGED
@@ -3,6 +3,9 @@
|
|
3
3
|
|
4
4
|
---
|
5
5
|
|
6
|
+
意図を外した回答
|
7
|
+
|
8
|
+
```
|
6
9
|
> 多態性は曖昧に捉えることでメリットを得ている
|
7
10
|
|
8
11
|
ArrayListはListですが、
|
@@ -25,8 +28,8 @@
|
|
25
28
|
|
26
29
|
ObjectはStringとしての振る舞いを持ちませんね、
|
27
30
|
ObjectをStringとして扱えるのは多態の例ではないです。
|
31
|
+
```
|
28
32
|
|
29
|
-
|
30
33
|
---
|
31
34
|
|
32
35
|
型安全について不安になったのでちょっと調べました。
|
8
要約
answer
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
CS学んだわけではないので、
|
2
|
+
もっと詳しい方マサカリ投げてください。
|
3
|
+
|
4
|
+
---
|
5
|
+
|
1
6
|
> 多態性は曖昧に捉えることでメリットを得ている
|
2
7
|
|
3
8
|
ArrayListはListですが、
|
@@ -35,4 +40,9 @@
|
|
35
40
|
「型に対する不正な操作を実行時に検出して異常終了させる」も安全側に含みます。
|
36
41
|
つまり、実行時にすらエラーを吐かないものを「型が安全でない」というらしいです。
|
37
42
|
|
38
|
-
静的型付けか動的型付けかは型安全性と関係ないです。
|
43
|
+
静的型付けか動的型付けかは型安全性と関係ないです。
|
44
|
+
|
45
|
+
---
|
46
|
+
|
47
|
+
長ったらしいので簡潔に纏めると
|
48
|
+
あなたの型安全(と多態)の認識がズレてませんか?
|
7
修正
answer
CHANGED
@@ -24,13 +24,6 @@
|
|
24
24
|
|
25
25
|
---
|
26
26
|
|
27
|
-
> 多態性と型安全の両方のコンセプトを一つ部分に取り込むことはできないと思うのですが、その使い分けについて、教えてくださいというのが私の質問だったのです。
|
28
|
-
|
29
|
-
型安全の意味を「型によるエラーを防ぐ」とすると、
|
30
|
-
型安全を壊しているのはダウンキャストであって多態性ではないと思います。
|
31
|
-
|
32
|
-
---
|
33
|
-
|
34
27
|
型安全について不安になったのでちょっと調べました。
|
35
28
|
|
36
29
|
言葉の定義の問題なので、質問の意図とは外れますが、
|
6
修正
answer
CHANGED
@@ -31,13 +31,15 @@
|
|
31
31
|
|
32
32
|
---
|
33
33
|
|
34
|
+
型安全について不安になったのでちょっと調べました。
|
35
|
+
|
34
36
|
言葉の定義の問題なので、質問の意図とは外れますが、
|
35
37
|
|
36
38
|
> 型安全はこれとは逆に変数には可能な限り厳密な型を指定しようという考え方です。
|
37
39
|
|
38
40
|
型安全をこう捉えるなら、多態性とは確かに相反しますが、
|
39
|
-
|
40
41
|
そもそも「型安全」は
|
41
42
|
「型に対する不正な操作を実行時に検出して異常終了させる」も安全側に含みます。
|
43
|
+
つまり、実行時にすらエラーを吐かないものを「型が安全でない」というらしいです。
|
42
44
|
|
43
|
-
|
45
|
+
静的型付けか動的型付けかは型安全性と関係ないです。
|
5
型安全の意味について
answer
CHANGED
@@ -27,4 +27,17 @@
|
|
27
27
|
> 多態性と型安全の両方のコンセプトを一つ部分に取り込むことはできないと思うのですが、その使い分けについて、教えてくださいというのが私の質問だったのです。
|
28
28
|
|
29
29
|
型安全の意味を「型によるエラーを防ぐ」とすると、
|
30
|
-
型安全を壊しているのはダウンキャストであって多態性ではないと思います。
|
30
|
+
型安全を壊しているのはダウンキャストであって多態性ではないと思います。
|
31
|
+
|
32
|
+
---
|
33
|
+
|
34
|
+
言葉の定義の問題なので、質問の意図とは外れますが、
|
35
|
+
|
36
|
+
> 型安全はこれとは逆に変数には可能な限り厳密な型を指定しようという考え方です。
|
37
|
+
|
38
|
+
型安全をこう捉えるなら、多態性とは確かに相反しますが、
|
39
|
+
|
40
|
+
そもそも「型安全」は
|
41
|
+
「型に対する不正な操作を実行時に検出して異常終了させる」も安全側に含みます。
|
42
|
+
|
43
|
+
つまり、実行時にすらエラーを吐かないものを「型が安全でない」というらしいです。
|
4
追記に対して
answer
CHANGED
@@ -19,4 +19,12 @@
|
|
19
19
|
ArrayListをListとして扱えるのは多態の例です。
|
20
20
|
|
21
21
|
ObjectはStringとしての振る舞いを持ちませんね、
|
22
|
-
ObjectをStringとして扱えるのは多態の例ではないです。
|
22
|
+
ObjectをStringとして扱えるのは多態の例ではないです。
|
23
|
+
|
24
|
+
|
25
|
+
---
|
26
|
+
|
27
|
+
> 多態性と型安全の両方のコンセプトを一つ部分に取り込むことはできないと思うのですが、その使い分けについて、教えてくださいというのが私の質問だったのです。
|
28
|
+
|
29
|
+
型安全の意味を「型によるエラーを防ぐ」とすると、
|
30
|
+
型安全を壊しているのはダウンキャストであって多態性ではないと思います。
|
3
修正
answer
CHANGED
@@ -15,5 +15,8 @@
|
|
15
15
|
Objectを要求していて、内部でObjectとして扱うなら
|
16
16
|
Stringを渡しても問題無いですね。
|
17
17
|
|
18
|
-
ArrayListはListとしての振る舞いを持ちますね、
|
18
|
+
ArrayListはListとしての振る舞いを持ちますね、
|
19
|
+
ArrayListをListとして扱えるのは多態の例です。
|
20
|
+
|
19
|
-
ObjectはStringとしての振る舞いを持ちませんね、
|
21
|
+
ObjectはStringとしての振る舞いを持ちませんね、
|
22
|
+
ObjectをStringとして扱えるのは多態の例ではないです。
|
2
例に対称性をもたせた
answer
CHANGED
@@ -9,6 +9,9 @@
|
|
9
9
|
Objectを要求していて、内部でStringとして扱うなら
|
10
10
|
String以外渡すとエラーなのにString以外を渡せるので問題ですね。
|
11
11
|
|
12
|
+
Listを要求していて、内部でArrayListとして扱うなら
|
13
|
+
ArrayList以外のListを渡すとエラーなのにArrayList以外のListを渡せるので問題ですね。
|
14
|
+
|
12
15
|
Objectを要求していて、内部でObjectとして扱うなら
|
13
16
|
Stringを渡しても問題無いですね。
|
14
17
|
|
1
言葉の増量
answer
CHANGED
@@ -1,4 +1,16 @@
|
|
1
1
|
> 多態性は曖昧に捉えることでメリットを得ている
|
2
2
|
|
3
3
|
ArrayListはListですが、
|
4
|
-
ObjectはStringではありません。
|
4
|
+
ObjectはStringではありません。
|
5
|
+
|
6
|
+
Listを要求していて、内部でListとして扱うなら
|
7
|
+
ArrayListを渡しても問題無いですね。
|
8
|
+
|
9
|
+
Objectを要求していて、内部でStringとして扱うなら
|
10
|
+
String以外渡すとエラーなのにString以外を渡せるので問題ですね。
|
11
|
+
|
12
|
+
Objectを要求していて、内部でObjectとして扱うなら
|
13
|
+
Stringを渡しても問題無いですね。
|
14
|
+
|
15
|
+
ArrayListはListとしての振る舞いを持ちますね、多態の例です。
|
16
|
+
ObjectはStringとしての振る舞いを持ちませんね、多態の例ではないです。
|