回答編集履歴
4
微修正
test
CHANGED
@@ -12,8 +12,6 @@
|
|
12
12
|
|
13
13
|
よって、次のように表示されてしまいます。というかそうしたいがための継承、オーバーラードだったりします。
|
14
14
|
|
15
|
-
つまり、継承とメソッドのオーバーライドでなにをするかというと、スーパークラスの処理にサブクラスで処理を追加したり、まるごと処理を変えてしまったりします。
|
16
|
-
|
17
15
|
|
18
16
|
|
19
17
|
--------スーパークラス--------
|
@@ -22,7 +20,11 @@
|
|
22
20
|
|
23
21
|
|
24
22
|
|
23
|
+
つまり、継承とメソッドのオーバーライドでなにをするかというと、スーパークラスの処理にサブクラスで**処理を追加したり**、**まるごと処理を変えてしまったり**します。
|
24
|
+
|
25
|
+
|
26
|
+
|
25
|
-
で、参考になるサンプルコードを書いてみました。
|
27
|
+
で、代わりに参考になるそれらしいサンプルコードを書いてみました。
|
26
28
|
|
27
29
|
```java
|
28
30
|
|
@@ -48,7 +50,9 @@
|
|
48
50
|
|
49
51
|
|
50
52
|
|
53
|
+
######結局、インスタンスや継承、オーバーライドというのは?
|
54
|
+
|
51
|
-
その他いろいろ書こうとしたのですが、不慣れでややこしくなりそうだったのでやめました。
|
55
|
+
その他いろいろ書こうとしたのですが、私が教えるのに不慣れでややこしくなりそうだったのでやめました。
|
52
56
|
|
53
57
|
次のキーワードで、平易な解説記事を探してみてください
|
54
58
|
|
3
微修正
test
CHANGED
@@ -7,6 +7,18 @@
|
|
7
7
|
|
8
8
|
|
9
9
|
上記のリンクにあるとおり、(サブクラスの**外部**から)、オーバーライドされたメソッドを呼び出すことはできません。もちろん、オーバーライドされていないメソッドであれば呼び出せます。また、サブのクラスの**メソッド内からであれば**呼び出すことは可能です。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
よって、次のように表示されてしまいます。というかそうしたいがための継承、オーバーラードだったりします。
|
14
|
+
|
15
|
+
つまり、継承とメソッドのオーバーライドでなにをするかというと、スーパークラスの処理にサブクラスで処理を追加したり、まるごと処理を変えてしまったりします。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
--------スーパークラス--------
|
20
|
+
|
21
|
+
名前:【マネージャー】名無し
|
10
22
|
|
11
23
|
|
12
24
|
|
2
微修正
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
ご質問された話は、「インスタンスに関して」**というよりは「継承とオーバーライドに関して」**というお題かと思います。
|
1
|
+
ご質問された話は、「インスタンスに関して」**というよりは「継承とオーバーライドに関して」**というお題かと思います。
|
2
2
|
|
3
3
|
|
4
4
|
|
1
いろいろややこしくなったので、平易に修正しました
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
ご質問された話は、「インスタンスに関して」というよりは
|
1
|
+
ご質問された話は、「インスタンスに関して」**というよりは「継承とオーバーライドに関して」**というお題かと思います。(その後者の話の中で、インスタンスという言葉はでてくるとはおもいます)
|
2
2
|
|
3
3
|
|
4
4
|
|
@@ -6,48 +6,42 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
上記のリンクにあるとおり、サブクラスの**外部**から、
|
9
|
+
上記のリンクにあるとおり、(サブクラスの**外部**から)、オーバーライドされたメソッドを呼び出すことはできません。もちろん、オーバーライドされていないメソッドであれば呼び出せます。また、サブのクラスの**メソッド内からであれば**呼び出すことは可能です。
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
|
13
|
+
で、参考になるサンプルコードを書いてみました。
|
14
14
|
|
15
|
-
|
15
|
+
```java
|
16
16
|
|
17
|
-
|
17
|
+
ManagerOv manager = new ManagerOv();
|
18
|
+
|
19
|
+
System.out.println("--------サブクラス--------");
|
20
|
+
|
21
|
+
System.out.println("名前:" + manager.getName()); // サブクラスでオーバーライドした内容が表示されます
|
22
|
+
|
23
|
+
System.out.println("給与:" + manager.getSalary()); // スーパークラスのメソッドを呼び出します
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
StaffOv staff = manager; // staffはStaffOvだけど、実際の中身(インスタンス)は、ManagerOv
|
28
|
+
|
29
|
+
System.out.println("--------スーパークラス--------");
|
30
|
+
|
31
|
+
System.out.println("名前:" + staff.getName()); // インスタンスがManagerOvなので、そのクラスでオーバーライドしたメソッドでの内容が表示されます
|
32
|
+
|
33
|
+
System.out.println("給与:" + staff.getSalary()); // メソッドを呼び出します
|
34
|
+
|
35
|
+
```
|
18
36
|
|
19
37
|
|
20
38
|
|
21
|
-
|
39
|
+
その他いろいろ書こうとしたのですが、不慣れでややこしくなりそうだったのでやめました。
|
22
40
|
|
23
|
-
|
41
|
+
次のキーワードで、平易な解説記事を探してみてください
|
24
42
|
|
25
|
-
|
43
|
+
- Java インスタンス
|
26
44
|
|
27
|
-
|
45
|
+
- Java 継承
|
28
46
|
|
29
|
-
String name = "名無し";
|
30
|
-
|
31
|
-
String getName() {
|
32
|
-
|
33
|
-
|
47
|
+
- Java オーバーライド
|
34
|
-
|
35
|
-
}
|
36
|
-
|
37
|
-
}
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
// サブクラス
|
42
|
-
|
43
|
-
class ManagerOv extends StaffOv {
|
44
|
-
|
45
|
-
String getName() {
|
46
|
-
|
47
|
-
return "【マネージャー】" + base.getName(); // ここ!
|
48
|
-
|
49
|
-
}
|
50
|
-
|
51
|
-
}
|
52
|
-
|
53
|
-
```
|