teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

訂正

2020/06/23 14:16

投稿

退会済みユーザー
answer CHANGED
@@ -19,27 +19,30 @@
19
19
  }
20
20
  }
21
21
 
22
- class Hoge: Beep {
22
+ class Base {
23
+
23
- var value: Int = 10
24
+ var value: Int = 5
24
25
 
26
+ }
25
27
 
28
+ class Hoge: Base, Beep {
26
29
 
27
30
  }
28
31
 
29
- class Fuga: Beep {
32
+ class Fuga: Base, Beep {
30
33
 
31
- var value: Int = 5
32
-
33
34
  func beep() {
34
35
  print("fugaBeeep")
35
36
  }
36
37
  }
37
38
 
39
+ var beep1: Beep = Hoge()
40
+
38
41
  var beep: Beep = Hoge()
39
42
 
40
43
  beep.beep() // => Beeep
41
44
 
42
- print(beep.value) // => 10
45
+ print(beep.value) // => 5
43
46
 
44
47
  beep = Fuga()
45
48
 

4

訂正

2020/06/23 14:16

投稿

退会済みユーザー
answer CHANGED
@@ -50,4 +50,5 @@
50
50
 
51
51
  ```
52
52
 
53
- protocolにプロパティを宣言して、プロトコルに従ってクラスに実装するだけですけど。
53
+ protocolにプロパティを宣言して、プロトコルに従ってクラスに実装するだけですけど。
54
+ ご自身で調べられてはいかがですか?

3

訂正

2020/06/23 13:59

投稿

退会済みユーザー
answer CHANGED
@@ -7,6 +7,9 @@
7
7
  ```swift
8
8
 
9
9
  protocol Beep {
10
+
11
+ var value: Int { get set }
12
+
10
13
  func beep()
11
14
  }
12
15
 
@@ -17,9 +20,16 @@
17
20
  }
18
21
 
19
22
  class Hoge: Beep {
23
+ var value: Int = 10
24
+
25
+
26
+
20
27
  }
21
28
 
22
- class Fuga: Beep {
29
+ class Fuga: Beep {
30
+
31
+ var value: Int = 5
32
+
23
33
  func beep() {
24
34
  print("fugaBeeep")
25
35
  }
@@ -29,8 +39,15 @@
29
39
 
30
40
  beep.beep() // => Beeep
31
41
 
42
+ print(beep.value) // => 10
43
+
32
44
  beep = Fuga()
33
45
 
34
46
  beep.beep() // => fugaBeeep
35
47
 
48
+ print(beep.value) // => 5
49
+
50
+
36
- ```
51
+ ```
52
+
53
+ protocolにプロパティを宣言して、プロトコルに従ってクラスに実装するだけですけど。

2

訂正

2020/06/23 13:59

投稿

退会済みユーザー
answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ---
4
4
  説明は得意じゃないので適当ですが、こんなんどうでしょうか?
5
- パタンは色々あるので調べてみて
5
+ パタンは色々あるので、もっといい説明がごろごろ転がってるので調べてみて
6
6
 
7
7
  ```swift
8
8
 

1

訂正

2020/06/23 08:06

投稿

退会済みユーザー
answer CHANGED
@@ -1,1 +1,36 @@
1
- プロトコル指向にしてみたらどうですか
1
+ プロトコル指向にしてみたらどうですか
2
+
3
+ ---
4
+ 説明は得意じゃないので適当ですが、こんなんどうでしょうか?
5
+ パタンは色々あるので調べてみて・
6
+
7
+ ```swift
8
+
9
+ protocol Beep {
10
+ func beep()
11
+ }
12
+
13
+ extension Beep {
14
+ func beep() {
15
+ print("Beeep")
16
+ }
17
+ }
18
+
19
+ class Hoge: Beep {
20
+ }
21
+
22
+ class Fuga: Beep {
23
+ func beep() {
24
+ print("fugaBeeep")
25
+ }
26
+ }
27
+
28
+ var beep: Beep = Hoge()
29
+
30
+ beep.beep() // => Beeep
31
+
32
+ beep = Fuga()
33
+
34
+ beep.beep() // => fugaBeeep
35
+
36
+ ```