回答編集履歴
9
Button can pushでは「ボタンが押せる」と言う意味になるので、Button can be pushed「ボタンを押すことができる」に変更
answer
CHANGED
@@ -10,15 +10,15 @@
|
|
10
10
|
|
11
11
|
例えば、`ToggleButton is a Button, and FlatButton is a Button`という関係を明示するときは`ToggleButton`と`FlatButton`クラスに`Button`クラスを継承させます。
|
12
12
|
|
13
|
-
例えば、`ToggleButton can
|
13
|
+
例えば、`ToggleButton can be pushed, and FlatButton can be pushed`という関係を明示するときは`ToggleButton`と`FlatButton`クラスに`Pushable`インターフェイスを実装させます。
|
14
14
|
|
15
|
-
もちろん、`Button`という抽象クラスを定義して、`Button can
|
15
|
+
もちろん、`Button`という抽象クラスを定義して、`Button can be pushed`という関係を明示するために`Button`に`Pushable`を実装しても構いません。
|
16
16
|
|
17
17
|
# 実際に何の意味があるのか
|
18
18
|
|
19
19
|
最初にも書きましたが、**ポリモーフィズム**を使えることが一番おいしいのです。
|
20
20
|
|
21
|
-
`is a button`なオブジェクトまたは、または`can
|
21
|
+
`is a button`なオブジェクトまたは、または`can be pushed`なオブジェクトなら特定の処理をしたいというケースがあります。
|
22
22
|
その場合はインターフェイスの型や抽象クラスの型を引数に取り、プログラムを書くことができます。
|
23
23
|
|
24
24
|
```Java
|
8
文章の修正
answer
CHANGED
@@ -67,4 +67,4 @@
|
|
67
67
|
|
68
68
|
これが**ポリモーフィズム**(多態性)です。
|
69
69
|
|
70
|
-
後で`DecorativeButton`を追加したいという時になっても、そこに`Button`クラスを継承させたり、`Pushable`インターフェイスを実装させたりすることですぐにアプリケーションへ組み込むことが出来ます。
|
70
|
+
後で`DecorativeButton`という新しいクラスを追加したいという時になっても、そこに`Button`クラスを継承させたり、`Pushable`インターフェイスを実装させたりすることですぐにアプリケーションへ組み込むことが出来ます。
|
7
カンマがないのが気になる
answer
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
例えば、`ToggleButton is a Button, and FlatButton is a Button`という関係を明示するときは`ToggleButton`と`FlatButton`クラスに`Button`クラスを継承させます。
|
12
12
|
|
13
|
-
例えば、`ToggleButton can push and FlatButton can push`という関係を明示するときは`ToggleButton`と`FlatButton`クラスに`Pushable`インターフェイスを実装させます。
|
13
|
+
例えば、`ToggleButton can push, and FlatButton can push`という関係を明示するときは`ToggleButton`と`FlatButton`クラスに`Pushable`インターフェイスを実装させます。
|
14
14
|
|
15
15
|
もちろん、`Button`という抽象クラスを定義して、`Button can push`という関係を明示するために`Button`に`Pushable`を実装しても構いません。
|
16
16
|
|
6
an => a
answer
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
抽象クラスは`is-a`関係を作るための機能であり、
|
9
9
|
インターフェイスは`can-do`関係を作るための機能です。
|
10
10
|
|
11
|
-
例えば、`ToggleButton is a Button, and FlatButton is
|
11
|
+
例えば、`ToggleButton is a Button, and FlatButton is a Button`という関係を明示するときは`ToggleButton`と`FlatButton`クラスに`Button`クラスを継承させます。
|
12
12
|
|
13
13
|
例えば、`ToggleButton can push and FlatButton can push`という関係を明示するときは`ToggleButton`と`FlatButton`クラスに`Pushable`インターフェイスを実装させます。
|
14
14
|
|
5
文章の修正
answer
CHANGED
@@ -63,7 +63,7 @@
|
|
63
63
|
}
|
64
64
|
```
|
65
65
|
|
66
|
-
上記のように書くことで、引数に渡されたインスタンス
|
66
|
+
上記のように書くことで、引数に渡されたインスタンス毎の状態を取得したり、インスタンス毎に違う振る舞いをさせたりすることができます。
|
67
67
|
|
68
68
|
これが**ポリモーフィズム**(多態性)です。
|
69
69
|
|
4
pushしてないのでpushした
answer
CHANGED
@@ -28,13 +28,15 @@
|
|
28
28
|
Button fb = new FlatButton();
|
29
29
|
getButtonIsEnabled(tb);
|
30
30
|
getButtonIsEnabled(fb);
|
31
|
+
pushSomething(tb);
|
32
|
+
pushSomething(fb);
|
31
33
|
}
|
32
34
|
|
33
35
|
public static void getButtonIsEnabled(Button b){
|
34
36
|
System.out.println(b.getEnabled());
|
35
37
|
}
|
36
38
|
|
37
|
-
public static void
|
39
|
+
public static void pushSomething(Pushable p){
|
38
40
|
p.push();
|
39
41
|
}
|
40
42
|
}
|
3
表記ゆれ
answer
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
最初にも書きましたが、**ポリモーフィズム**を使えることが一番おいしいのです。
|
20
20
|
|
21
21
|
`is a button`なオブジェクトまたは、または`can push`なオブジェクトなら特定の処理をしたいというケースがあります。
|
22
|
-
その場合はインタフェ
|
22
|
+
その場合はインターフェイスの型や抽象クラスの型を引数に取り、プログラムを書くことができます。
|
23
23
|
|
24
24
|
```Java
|
25
25
|
public class Main {
|
2
コードの修正(見た目が少し気になる)
answer
CHANGED
@@ -42,10 +42,9 @@
|
|
42
42
|
|
43
43
|
```Java
|
44
44
|
public abstract class Button implements Pushable{
|
45
|
+
private boolean enabled = true;
|
45
46
|
public abstract void push();
|
46
47
|
|
47
|
-
private boolean enabled = true;
|
48
|
-
|
49
48
|
public boolean getEnabled(){
|
50
49
|
return this.enabled;
|
51
50
|
}
|
1
ちょっと文言変えました
answer
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
最初にも書きましたが、**ポリモーフィズム**を使えることが一番おいしいのです。
|
20
20
|
|
21
|
-
`is a button`なオブジェクトまたは、または`can push`
|
21
|
+
`is a button`なオブジェクトまたは、または`can push`なオブジェクトなら特定の処理をしたいというケースがあります。
|
22
22
|
その場合はインタフェースの型や抽象クラスの型を引数に取り、プログラムを書くことができます。
|
23
23
|
|
24
24
|
```Java
|
@@ -62,6 +62,8 @@
|
|
62
62
|
}
|
63
63
|
```
|
64
64
|
|
65
|
-
上記のように書くことで、引数に渡された
|
65
|
+
上記のように書くことで、引数に渡されたインスタンスがそのクラスによって違う状態を取得したり、振る舞わせたりすることができます。
|
66
66
|
|
67
|
+
これが**ポリモーフィズム**(多態性)です。
|
68
|
+
|
67
|
-
後で`
|
69
|
+
後で`DecorativeButton`を追加したいという時になっても、そこに`Button`クラスを継承させたり、`Pushable`インターフェイスを実装させたりすることですぐにアプリケーションへ組み込むことが出来ます。
|