回答編集履歴

4

微修正

2018/10/27 16:34

投稿

退会済みユーザー
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

微修正

2018/10/27 16:34

投稿

退会済みユーザー
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

微修正

2018/10/27 16:32

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- ご質問された話は、「インスタンスに関して」**というよりは「継承とオーバーライドに関して」**というお題かと思います。(その後者の話の中で、インスタンスという言葉はでてくるとはおもいます)
1
+ ご質問された話は、「インスタンスに関して」**というよりは「継承とオーバーライドに関して」**というお題かと思います。
2
2
 
3
3
 
4
4
 

1

いろいろややこしくなったので、平易に修正しました

2018/10/27 16:29

投稿

退会済みユーザー
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
- 1. スーパークラスのメソッドの処理に追加するようにサブクラスの処理を追加する
15
+ ```java
16
16
 
17
- 2. スーパークラスのメソッドの処理を丸ごと書き換える
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
- **1.例**
39
+ 他いろいろ書こうとしたのですが、不慣れでややこしくなりそうだったのでやめました。
22
40
 
23
- ```Java
41
+ 次のキーワードで、平易な解説記事を探してみてください
24
42
 
25
- //ーパークラ
43
+ - Java インタン
26
44
 
27
- class StaffOv {
45
+ - Java 継承
28
46
 
29
- String name = "名無し";
30
-
31
- String getName() {
32
-
33
- return name;
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
- ```