質問編集履歴

2

コードの追加

2017/03/03 11:41

投稿

naoyahige
naoyahige

スコア23

test CHANGED
File without changes
test CHANGED
@@ -154,4 +154,8 @@
154
154
 
155
155
 
156
156
 
157
- var_dump($obj->setA('多相性 ')->execute()->getA());```
157
+ var_dump($obj->setA('多相性 ')->execute()->getA());
158
+
159
+ コード
160
+
161
+ ```

1

コードの追加

2017/03/03 11:41

投稿

naoyahige
naoyahige

スコア23

test CHANGED
File without changes
test CHANGED
@@ -11,3 +11,147 @@
11
11
 
12
12
 
13
13
  どなたか教えていただきたいです。
14
+
15
+
16
+
17
+ ※追記
18
+
19
+
20
+
21
+ 上司からヒントをいただきましたが、まだコードの勉強はしていないのでわからないです・・・
22
+
23
+ どういうことでしょうか。
24
+
25
+
26
+
27
+ ```
28
+
29
+ <?php
30
+
31
+
32
+
33
+ abstract class Parent1
34
+
35
+ {
36
+
37
+ protected $a = '';
38
+
39
+
40
+
41
+ public function setA($a)
42
+
43
+ {
44
+
45
+ $this->a = $a;
46
+
47
+
48
+
49
+ return $this;
50
+
51
+ }
52
+
53
+
54
+
55
+ public function getA()
56
+
57
+ {
58
+
59
+ return $this->a;
60
+
61
+ }
62
+
63
+
64
+
65
+ abstract public function execute();
66
+
67
+
68
+
69
+ }
70
+
71
+
72
+
73
+ class Child1 extends Parent1
74
+
75
+ {
76
+
77
+ public function execute()
78
+
79
+ {
80
+
81
+ $this->a .= ' Child1';
82
+
83
+
84
+
85
+ return $this;
86
+
87
+ }
88
+
89
+
90
+
91
+ }
92
+
93
+
94
+
95
+ class Child2 extends Parent1
96
+
97
+ {
98
+
99
+ public function execute()
100
+
101
+ {
102
+
103
+ $this->a .= ' Child2';
104
+
105
+
106
+
107
+ return $this;
108
+
109
+ }
110
+
111
+
112
+
113
+ }
114
+
115
+
116
+
117
+ // 継承
118
+
119
+ $obj1 = new Child1();
120
+
121
+ $obj2 = new Child2();
122
+
123
+ var_dump($obj1->setA('obj1')->execute()->getA());
124
+
125
+ var_dump($obj2->setA('obj2')->execute()->getA());
126
+
127
+
128
+
129
+ // ポリモーフィズム
130
+
131
+ $input = rand(1, 2);
132
+
133
+ $obj = null;
134
+
135
+ switch ($input) {
136
+
137
+ case 1:
138
+
139
+ $obj = new Child1();
140
+
141
+ break;
142
+
143
+ case 2:
144
+
145
+ $obj = new Child2();
146
+
147
+ break;
148
+
149
+ default:
150
+
151
+ break;
152
+
153
+ }
154
+
155
+
156
+
157
+ var_dump($obj->setA('多相性 ')->execute()->getA());```