回答編集履歴

5

追記

2017/09/09 05:56

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -88,6 +88,64 @@
88
88
 
89
89
  ---
90
90
 
91
+ superとthisの挙動が同じように見えるのは、
92
+
93
+ サブクラスで、ここではcalculatorでメソッドをオーバーライドしていないからです。
94
+
95
+ ```Java
96
+
97
+ public class MyBase {
98
+
99
+ public MyBase() {
100
+
101
+ }
102
+
103
+ public void greet() {
104
+
105
+ System.out.println("Hello!");
106
+
107
+ }
108
+
109
+ }
110
+
111
+ ```
112
+
113
+
114
+
115
+ ```Java
116
+
117
+ public class MyChild extends MyBase {
118
+
119
+ public MyChild() {
120
+
121
+ }
122
+
123
+ @Override
124
+
125
+ public void greet() {
126
+
127
+ System.out.println("Hi!");
128
+
129
+ }
130
+
131
+
132
+
133
+ public void saySomething() {
134
+
135
+ this.greet(); // 出力されるのは: Hi!
136
+
137
+ super.greet(); // 出力されるのは: Hello!
138
+
139
+ }
140
+
141
+ }
142
+
143
+ ```
144
+
145
+
146
+
147
+ ---
148
+
91
149
  thisは省略可能である場合も多いです。
92
150
 
93
151
  質問者様のコードもその一つですが、可読性を高めるために明記しているのかと。

4

成形

2017/09/09 05:56

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -80,9 +80,7 @@
80
80
 
81
81
  上記の例では`MyClass`をひな型に、インスタンス`instance1` `instance2`を生成しています。
82
82
 
83
- mainメソッドからはそれぞれをその名前で呼び分ければいいのですが、
84
-
85
- インスタンスの『一人称』も欲しいところです。それがthisです。
83
+ mainメソッドからは呼び分けられるですが、『一人称』も欲しいところです。それがthisです。
86
84
 
87
85
  `this.value_`は、『オイラのvalue_だよ』と言っているのです。
88
86
 

3

追記

2017/09/09 05:44

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -42,15 +42,15 @@
42
42
 
43
43
  public static void main(String[] args){
44
44
 
45
- MyClass class1 = new MyClass(5);
45
+ MyClass instance1 = new MyClass(5);
46
46
 
47
- MyClass class2 = new MyClass(3);
47
+ MyClass instance2 = new MyClass(3);
48
48
 
49
49
 
50
50
 
51
- class1.print();
51
+ instance1.print();
52
52
 
53
- class2.print();
53
+ instance2.print();
54
54
 
55
55
 
56
56
 
@@ -78,6 +78,16 @@
78
78
 
79
79
 
80
80
 
81
+ 上記の例では`MyClass`をひな型に、インスタンス`instance1` `instance2`を生成しています。
82
+
83
+ mainメソッドからはそれぞれをその名前で呼び分ければいいのですが、
84
+
85
+ インスタンスの『一人称』も欲しいところです。それがthisです。
86
+
87
+ `this.value_`は、『オイラのvalue_だよ』と言っているのです。
88
+
89
+
90
+
81
91
  ---
82
92
 
83
93
  thisは省略可能である場合も多いです。

2

追記

2017/09/09 05:40

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -77,3 +77,13 @@
77
77
  ```
78
78
 
79
79
 
80
+
81
+ ---
82
+
83
+ thisは省略可能である場合も多いです。
84
+
85
+ 質問者様のコードもその一つですが、可読性を高めるために明記しているのかと。
86
+
87
+ 以下の質問が参考になるかもしれません。
88
+
89
+ [https://teratail.com/questions/86708](https://teratail.com/questions/86708)

1

追記

2017/09/09 05:30

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -17,6 +17,16 @@
17
17
  public void print() {
18
18
 
19
19
  System.out.println(this.value_);
20
+
21
+ }
22
+
23
+ static public void sayHello() {
24
+
25
+ // エラー!静的でないフィールドを参照することは出来ない。
26
+
27
+ // System.out.println(this.value_);
28
+
29
+ System.out.println("hello");
20
30
 
21
31
  }
22
32
 
@@ -42,8 +52,28 @@
42
52
 
43
53
  class2.print();
44
54
 
55
+
56
+
57
+ MyClass.sayHello();
58
+
45
59
  }
46
60
 
47
61
  }
48
62
 
49
63
  ```
64
+
65
+
66
+
67
+ ```
68
+
69
+ // 実行結果
70
+
71
+ 5
72
+
73
+ 3
74
+
75
+ hello
76
+
77
+ ```
78
+
79
+