-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
110 lines (89 loc) · 4.78 KB
/
Solution.java
File metadata and controls
110 lines (89 loc) · 4.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//and she saw two angels in white sitting, one at the head, and one at the feet, where the body of Jesus had lain. (John 20:12)
package com.javarush.task.task23.task2306;
/*
Inner 2
*/
public class Solution {
private String country;
private String city;
public Solution(String country, String city) {
this.country = country;
this.city = city;
}
/*т.к. модификатор иннер класса private, то чтобы вызвать метод getDescription из другого внешнего класса,
нужно обернуть его вызов в какой-то public метод*/
public String getDescriptionOfUser(String name) {
return getTrickyUser(name).getDescription();
}
public SuperUser getTrickyUser(String name) {
return new SuperUser(name);
}
private class SuperUser {
private String name;
//доступ к этому методу возможен только внутри класса Solution, т.к. модификатор иннер класса private
public SuperUser(String name) {
this.name = name;
}
//доступ к этому методу возможен только внутри класса Solution, т.к. модификатор иннер класса private
public String getDescription() {
return String.format("My name is %s. I'm from %s, %s.", this.name, country, city);
}
}
public static void main(String[] args) {
Solution solution = new Solution("the USA", "Seattle");
//внутри класса Solution (а сейчас мы внутри) к методу getDescription можно обращаться обоими способами
System.out.println(solution.getTrickyUser("George").getDescription());
//а из любого другого внешнего класса только так:
System.out.println(solution.getDescriptionOfUser("George"));
}
}
/*
Inner 2
В классе SuperUser метод getDescription должен учитывать страну и город, т.е. возвращать результат аналогичный следующему:
My name is George. I'm from the USA, Seattle.
Используй возможности иннер класса.
Требования:
1. Класс SuperUser должен быть приватным.
2. Класс SuperUser должен содержать метод getDescription.
3. Метод getDescription в классе SuperUser должен быть публичным.
4. Метод getDescription в классе SuperUser должен возвращать строку учитывающую имя, страну и город пользователя форматированную согласно условию задачи.
5. Метод getTrickyUser должен возвращать объект типа SuperUser.
package com.javarush.task.task23.task2306;
*
Inner 2
*
public class Solution {
private String country;
private String city;
public Solution(String country, String city) {
this.country = country;
this.city = city;
}
/*т.к. модификатор иннер класса private, то чтобы вызвать метод getDescription из другого внешнего класса,
нужно обернуть его вызов в какой-то public метод*/
public String getDescriptionOfUser(String name) {
return getTrickyUser(name).getDescription();
}
public SuperUser getTrickyUser(String name) {
return new SuperUser(name);
}
private class SuperUser {
private String name;
//доступ к этому методу возможен только внутри класса Solution, т.к. модификатор иннер класса private
public SuperUser(String name) {
this.name = name;
}
//доступ к этому методу возможен только внутри класса Solution, т.к. модификатор иннер класса private
public String getDescription() {
return String.format("My name is %s.", this.name);
}
}
public static void main(String[] args) {
Solution solution = new Solution("the USA", "Seattle");
//внутри класса Solution (а сейчас мы внутри) к методу getDescription можно обращаться обоими способами
System.out.println(solution.getTrickyUser("George").getDescription());
//а из любого другого внешнего класса только так:
System.out.println(solution.getDescriptionOfUser("George"));
}
}
*/