回答編集履歴

2

誤字の修正

2017/11/22 03:20

投稿

退会済みユーザー
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
 
15
- よくあるサンプルはPersonとStrudentを使った例でしょうか。
15
+ よくあるサンプルはPersonとStudentを使った例でしょうか。
16
16
 
17
17
  下記のような形で、親クラスのコンストラクタを呼ぶためにsuper()を使用することができます。
18
18
 

1

追記

2017/11/22 03:20

投稿

退会済みユーザー
test CHANGED
@@ -3,3 +3,181 @@
3
3
 
4
4
 
5
5
  TestはOyaでもKoでもありませんし、Koでのsuper.hogeの記載は該当箇所にはできません。
6
+
7
+
8
+
9
+ ---
10
+
11
+ 追記:
12
+
13
+
14
+
15
+ よくあるサンプルはPersonとStrudentを使った例でしょうか。
16
+
17
+ 下記のような形で、親クラスのコンストラクタを呼ぶためにsuper()を使用することができます。
18
+
19
+ この例では共通するデータとして姓名を親クラスに持たせています。
20
+
21
+ 挨拶をされる側にメソッドがあるため意味的には不適切ですが、スーパークラスとサブクラスで処理内容をオーバーライドにより分けることができます。
22
+
23
+
24
+
25
+ ```java
26
+
27
+ import java.util.*;
28
+
29
+
30
+
31
+ class Person {
32
+
33
+ protected String lastName;
34
+
35
+ protected String firstName;
36
+
37
+
38
+
39
+ public Person(String lastName, String firstName) {
40
+
41
+ this.lastName = lastName;
42
+
43
+ this.firstName = firstName;
44
+
45
+ }
46
+
47
+
48
+
49
+ public void hello() {
50
+
51
+ System.out.println(String.format("こんにちは、%sさん。", this));
52
+
53
+ }
54
+
55
+
56
+
57
+ @Override
58
+
59
+ public String toString() {
60
+
61
+ return String.format("%s %s", this.lastName, this.firstName);
62
+
63
+ }
64
+
65
+ }
66
+
67
+
68
+
69
+ class Student extends Person {
70
+
71
+ private int grade;
72
+
73
+
74
+
75
+ public Student(String lastName, String firstName, int grade) {
76
+
77
+ super(lastName, firstName);
78
+
79
+ this.grade = grade;
80
+
81
+ }
82
+
83
+
84
+
85
+ @Override
86
+
87
+ public void hello() {
88
+
89
+ System.out.println(String.format("こんにちは、%d年生の%sさん。", this.grade, this.lastName));
90
+
91
+ }
92
+
93
+ }
94
+
95
+
96
+
97
+ class Teacher extends Person {
98
+
99
+ private List<Student> students;
100
+
101
+
102
+
103
+ public Teacher(String lastName, String firstName) {
104
+
105
+ super(lastName, firstName);
106
+
107
+ this.students = new ArrayList<>();
108
+
109
+ }
110
+
111
+
112
+
113
+ public Teacher(String lastName, String firstName, List<Student> students) {
114
+
115
+ super(lastName, firstName);
116
+
117
+ this.students = students;
118
+
119
+ }
120
+
121
+
122
+
123
+ @Override
124
+
125
+ public void hello() {
126
+
127
+ System.out.println(String.format("こんにちは、%s先生。", this.lastName));
128
+
129
+ }
130
+
131
+ }
132
+
133
+
134
+
135
+ public class Main {
136
+
137
+ public static void main(String[] args) {
138
+
139
+ List<Person> persons = new ArrayList<>();
140
+
141
+
142
+
143
+ persons.add(new Person("山田", "太郎"));
144
+
145
+ persons.add(new Student("鈴木", "次郎", 2));
146
+
147
+ persons.add(new Teacher("佐藤", "花子"));
148
+
149
+
150
+
151
+ for (Person p : persons) {
152
+
153
+ System.out.println(p);
154
+
155
+ p.hello();
156
+
157
+ }
158
+
159
+ }
160
+
161
+ }
162
+
163
+
164
+
165
+ /*
166
+
167
+ $ java Main
168
+
169
+ 山田 太郎
170
+
171
+ こんにちは、山田 太郎さん。
172
+
173
+ 鈴木 次郎
174
+
175
+ こんにちは、2年生の鈴木さん。
176
+
177
+ 佐藤 花子
178
+
179
+ こんにちは、佐藤先生。
180
+
181
+ */
182
+
183
+ ```