回答編集履歴
2
後半、大間違いでした
answer
CHANGED
@@ -9,26 +9,36 @@
|
|
9
9
|
thisを外した場合、最も近い位置にあるローカル変数が対象になるので、エラーでなくなります。
|
10
10
|
|
11
11
|
|
12
|
-
アクセス制御をしたい場合、ローカル変数ではなく、フィールドにしてください。
|
12
|
+
~~アクセス制御をしたい場合、ローカル変数ではなく、フィールドにしてください。
|
13
|
-
(thisの有無は重複とは無関係です。重複していなくとも使えます)
|
13
|
+
(thisの有無は重複とは無関係です。重複していなくとも使えます)~~
|
14
14
|
|
15
|
+
mainメソッドはstaticなクラスメソッドなので、自分のインスタンスを持たず、
|
16
|
+
インスタンスフィールドにはアクセスできません。
|
17
|
+
その為、その中でthisを使うこともできません。
|
18
|
+
(自インスタンスが存在しないので、それを表すthisも使えない)
|
19
|
+
|
20
|
+
変数をローカル変数として、アクセス指定子とthisを外した状態にしてください。
|
21
|
+
privateと指定せずともローカル変数には外部からはアクセスできません。
|
22
|
+
また、ローカル変数へのアクセスにはthisは不要です
|
23
|
+
|
15
24
|
```Java
|
16
25
|
public class Main {
|
17
|
-
private double x1, y1, x2, y2;
|
18
26
|
|
19
27
|
public static void main(String[] args) {
|
20
28
|
|
29
|
+
double x1, y1, x2, y2;
|
30
|
+
|
21
31
|
Input in = Input();
|
22
32
|
|
23
|
-
|
33
|
+
x1 = in.inputDouble("端点1のx1の値を入力してください");
|
24
|
-
|
34
|
+
y1 = in.inputDouble("端点2のx2の値を入力してください");
|
25
|
-
|
35
|
+
x2 = in.inputDouble("端点1のy1の値を入力してください");
|
26
|
-
|
36
|
+
y2 = in.inputDouble("端点2のx2の値を入力してください");
|
27
37
|
|
28
|
-
LinerSegment beforeLine = new LinerSegment(
|
38
|
+
LinerSegment beforeLine = new LinerSegment(x1, y1, x2, y2);
|
29
39
|
LineSegment afterLine = beforeLine.linearTransfer();
|
30
40
|
System.out.println("Input LineSegment :" + beforeLine +
|
31
41
|
"\n => LineSegment after linearTransfer :" + afterLine);
|
32
|
-
|
42
|
+
}
|
33
43
|
}
|
34
44
|
```
|
1
追加
answer
CHANGED
@@ -6,4 +6,29 @@
|
|
6
6
|
○○は、自インスタンスのフィールドを指しますが、このクラスにはそのフィールドは宣言されていません。
|
7
7
|
宣言されていないフィールドへのアクセスはエラーになります。
|
8
8
|
|
9
|
-
thisを外した場合、最も近い位置にあるローカル変数が対象になるので、エラーでなくなります。
|
9
|
+
thisを外した場合、最も近い位置にあるローカル変数が対象になるので、エラーでなくなります。
|
10
|
+
|
11
|
+
|
12
|
+
アクセス制御をしたい場合、ローカル変数ではなく、フィールドにしてください。
|
13
|
+
(thisの有無は重複とは無関係です。重複していなくとも使えます)
|
14
|
+
|
15
|
+
```Java
|
16
|
+
public class Main {
|
17
|
+
private double x1, y1, x2, y2;
|
18
|
+
|
19
|
+
public static void main(String[] args) {
|
20
|
+
|
21
|
+
Input in = Input();
|
22
|
+
|
23
|
+
this.x1 = in.inputDouble("端点1のx1の値を入力してください");
|
24
|
+
this.y1 = in.inputDouble("端点2のx2の値を入力してください");
|
25
|
+
this.x2 = in.inputDouble("端点1のy1の値を入力してください");
|
26
|
+
this.y2 = in.inputDouble("端点2のx2の値を入力してください");
|
27
|
+
|
28
|
+
LinerSegment beforeLine = new LinerSegment(this.x1, this.y1, this.x2, this.y2);
|
29
|
+
LineSegment afterLine = beforeLine.linearTransfer();
|
30
|
+
System.out.println("Input LineSegment :" + beforeLine +
|
31
|
+
"\n => LineSegment after linearTransfer :" + afterLine);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
```
|