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

回答編集履歴

5

追記

2017/09/09 05:56

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -43,6 +43,35 @@
43
43
  `this.value_`は、『オイラのvalue_だよ』と言っているのです。
44
44
 
45
45
  ---
46
+ superとthisの挙動が同じように見えるのは、
47
+ サブクラスで、ここではcalculatorでメソッドをオーバーライドしていないからです。
48
+ ```Java
49
+ public class MyBase {
50
+ public MyBase() {
51
+ }
52
+ public void greet() {
53
+ System.out.println("Hello!");
54
+ }
55
+ }
56
+ ```
57
+
58
+ ```Java
59
+ public class MyChild extends MyBase {
60
+ public MyChild() {
61
+ }
62
+ @Override
63
+ public void greet() {
64
+ System.out.println("Hi!");
65
+ }
66
+
67
+ public void saySomething() {
68
+ this.greet(); // 出力されるのは: Hi!
69
+ super.greet(); // 出力されるのは: Hello!
70
+ }
71
+ }
72
+ ```
73
+
74
+ ---
46
75
  thisは省略可能である場合も多いです。
47
76
  質問者様のコードもその一つですが、可読性を高めるために明記しているのかと。
48
77
  以下の質問が参考になるかもしれません。

4

成形

2017/09/09 05:56

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -39,8 +39,7 @@
39
39
  ```
40
40
 
41
41
  上記の例では`MyClass`をひな型に、インスタンス`instance1` `instance2`を生成しています。
42
- mainメソッドからはそれぞれをその名前で呼び分ければいいのですが、
43
- インスタンスの『一人称』も欲しいところです。それがthisです。
42
+ mainメソッドからは呼び分けられるですが、『一人称』も欲しいところです。それがthisです。
44
43
  `this.value_`は、『オイラのvalue_だよ』と言っているのです。
45
44
 
46
45
  ---

3

追記

2017/09/09 05:44

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -20,11 +20,11 @@
20
20
  ```Java
21
21
  public class Main{
22
22
  public static void main(String[] args){
23
- MyClass class1 = new MyClass(5);
23
+ MyClass instance1 = new MyClass(5);
24
- MyClass class2 = new MyClass(3);
24
+ MyClass instance2 = new MyClass(3);
25
25
 
26
- class1.print();
26
+ instance1.print();
27
- class2.print();
27
+ instance2.print();
28
28
 
29
29
  MyClass.sayHello();
30
30
  }
@@ -38,6 +38,11 @@
38
38
  hello
39
39
  ```
40
40
 
41
+ 上記の例では`MyClass`をひな型に、インスタンス`instance1` `instance2`を生成しています。
42
+ mainメソッドからはそれぞれをその名前で呼び分ければいいのですが、
43
+ インスタンスの『一人称』も欲しいところです。それがthisです。
44
+ `this.value_`は、『オイラのvalue_だよ』と言っているのです。
45
+
41
46
  ---
42
47
  thisは省略可能である場合も多いです。
43
48
  質問者様のコードもその一つですが、可読性を高めるために明記しているのかと。

2

追記

2017/09/09 05:40

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -37,3 +37,9 @@
37
37
  3
38
38
  hello
39
39
  ```
40
+
41
+ ---
42
+ thisは省略可能である場合も多いです。
43
+ 質問者様のコードもその一つですが、可読性を高めるために明記しているのかと。
44
+ 以下の質問が参考になるかもしれません。
45
+ [https://teratail.com/questions/86708](https://teratail.com/questions/86708)

1

追記

2017/09/09 05:30

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -9,6 +9,11 @@
9
9
  public void print() {
10
10
  System.out.println(this.value_);
11
11
  }
12
+ static public void sayHello() {
13
+ // エラー!静的でないフィールドを参照することは出来ない。
14
+ // System.out.println(this.value_);
15
+ System.out.println("hello");
16
+ }
12
17
  }
13
18
  ```
14
19
 
@@ -20,6 +25,15 @@
20
25
 
21
26
  class1.print();
22
27
  class2.print();
28
+
29
+ MyClass.sayHello();
23
30
  }
24
31
  }
25
- ```
32
+ ```
33
+
34
+ ```
35
+ // 実行結果
36
+ 5
37
+ 3
38
+ hello
39
+ ```