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

回答編集履歴

2

誤字の修正

2017/11/22 03:20

投稿

退会済みユーザー
answer CHANGED
@@ -5,7 +5,7 @@
5
5
  ---
6
6
  追記:
7
7
 
8
- よくあるサンプルはPersonとStrudentを使った例でしょうか。
8
+ よくあるサンプルはPersonとStudentを使った例でしょうか。
9
9
  下記のような形で、親クラスのコンストラクタを呼ぶためにsuper()を使用することができます。
10
10
  この例では共通するデータとして姓名を親クラスに持たせています。
11
11
  挨拶をされる側にメソッドがあるため意味的には不適切ですが、スーパークラスとサブクラスで処理内容をオーバーライドにより分けることができます。

1

追記

2017/11/22 03:20

投稿

退会済みユーザー
answer CHANGED
@@ -1,3 +1,92 @@
1
1
  クラスとインスタンスの関係についての理解が不足しているような印象を受けます。
2
2
 
3
- TestはOyaでもKoでもありませんし、Koでのsuper.hogeの記載は該当箇所にはできません。
3
+ TestはOyaでもKoでもありませんし、Koでのsuper.hogeの記載は該当箇所にはできません。
4
+
5
+ ---
6
+ 追記:
7
+
8
+ よくあるサンプルはPersonとStrudentを使った例でしょうか。
9
+ 下記のような形で、親クラスのコンストラクタを呼ぶためにsuper()を使用することができます。
10
+ この例では共通するデータとして姓名を親クラスに持たせています。
11
+ 挨拶をされる側にメソッドがあるため意味的には不適切ですが、スーパークラスとサブクラスで処理内容をオーバーライドにより分けることができます。
12
+
13
+ ```java
14
+ import java.util.*;
15
+
16
+ class Person {
17
+ protected String lastName;
18
+ protected String firstName;
19
+
20
+ public Person(String lastName, String firstName) {
21
+ this.lastName = lastName;
22
+ this.firstName = firstName;
23
+ }
24
+
25
+ public void hello() {
26
+ System.out.println(String.format("こんにちは、%sさん。", this));
27
+ }
28
+
29
+ @Override
30
+ public String toString() {
31
+ return String.format("%s %s", this.lastName, this.firstName);
32
+ }
33
+ }
34
+
35
+ class Student extends Person {
36
+ private int grade;
37
+
38
+ public Student(String lastName, String firstName, int grade) {
39
+ super(lastName, firstName);
40
+ this.grade = grade;
41
+ }
42
+
43
+ @Override
44
+ public void hello() {
45
+ System.out.println(String.format("こんにちは、%d年生の%sさん。", this.grade, this.lastName));
46
+ }
47
+ }
48
+
49
+ class Teacher extends Person {
50
+ private List<Student> students;
51
+
52
+ public Teacher(String lastName, String firstName) {
53
+ super(lastName, firstName);
54
+ this.students = new ArrayList<>();
55
+ }
56
+
57
+ public Teacher(String lastName, String firstName, List<Student> students) {
58
+ super(lastName, firstName);
59
+ this.students = students;
60
+ }
61
+
62
+ @Override
63
+ public void hello() {
64
+ System.out.println(String.format("こんにちは、%s先生。", this.lastName));
65
+ }
66
+ }
67
+
68
+ public class Main {
69
+ public static void main(String[] args) {
70
+ List<Person> persons = new ArrayList<>();
71
+
72
+ persons.add(new Person("山田", "太郎"));
73
+ persons.add(new Student("鈴木", "次郎", 2));
74
+ persons.add(new Teacher("佐藤", "花子"));
75
+
76
+ for (Person p : persons) {
77
+ System.out.println(p);
78
+ p.hello();
79
+ }
80
+ }
81
+ }
82
+
83
+ /*
84
+ $ java Main
85
+ 山田 太郎
86
+ こんにちは、山田 太郎さん。
87
+ 鈴木 次郎
88
+ こんにちは、2年生の鈴木さん。
89
+ 佐藤 花子
90
+ こんにちは、佐藤先生。
91
+ */
92
+ ```