рдЬрд╛рд╡рд╛ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░: рдУрдУрдкреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди
1. рдЬрд╛рд╡рд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдХреНрдпрд╛ рд╣реИрдВ?
рдЙрддреНрддрд░:-
рдУрдУрдкреА рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ:
- рд╡рд╕реНрддреБ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕
- рд╡рд┐рд░рд╛рд╕рдд
- рдХреИрдкреНрд╕реВрд▓реАрдХрд░рдг
- рдмрд╣реБрд░реВрдкрддрд╛
- рдорддрд┐рд╣реАрдирддрд╛
-
рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо: рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рдЬреЗрд╡реАрдПрдо (рдЬрд╛рд╡рд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
-
рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди: рдЬрд╕реНрдЯ-рдЗрди-рдЯрд╛рдЗрдо (JIT) рдХрдВрдкрд╛рдЗрд▓рд░ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдЬреЗрдЖрдИрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рдмрд╛рдЗрдЯрдХреЛрдб рдХреЛ рдорд╢реАрди рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЬреЗрд╡реАрдПрдо рдирд┐рд╖реНрдкрд╛рджрди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
- рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ: JVM рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдПрдХ рдереНрд░реЗрдб рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ
main thread
. рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдереНрд░реЗрдб рдХреНрд▓рд╛рд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рдпрд╛Runnable
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред
2. рд╡рд┐рд░рд╛рд╕рдд рдХреНрдпрд╛ рд╣реИ?
рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдПрдХ рд╡рд░реНрдЧ рджреВрд╕рд░реЗ рд╡рд░реНрдЧ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ ( рд╡рд┐рд╕реНрддреГрдд рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдХрдХреНрд╖рд╛ рд╕реЗ рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореМрдЬреВрджрд╛ рд╡рд░реНрдЧ рдХреЛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИsuperclass
рдФрд░ рдирд╡ рдирд┐рд░реНрдорд┐рдд рд╡рд░реНрдЧ рдХреЛ subclass
. рд▓реЛрдЧ рдпрд╣ рднреА рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ child
.
public class Animal {
private int age;
}
public class Dog extends Animal {
}
рдХрд╣рд╛рдБ Animal
рд╣реИ parent
рдФрд░ Dog
рдХрд╣рд╛рдБ рд╣реИ child
.
3. рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреНрдпрд╛ рд╣реИ?
рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░ рдкрджреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдореЗрдВ рдпрд╣ рдкреНрд░рд╢реНрди рдЕрдХреНрд╕рд░ рдкреВрдЫрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ, рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫреБрдкрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдмрд╛рд╣рд░реА рдкрд╣реБрдБрдЪ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░ рд╣реИред рдЗрдВрдЬрди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рддрдХ рд╣рдорд╛рд░реА рдХреЛрдИ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИред рд╣рдореЗрдВ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЪрд╛рдмреА рдХреЛ рдЗрдЧреНрдирд┐рд╢рди рдореЗрдВ рдбрд╛рд▓реЗрдВ рдФрд░ рдЗрдВрдЬрди рдЪрд╛рд▓реВ рдХрд░реЗрдВред рд╣реБрдб рдХреЗ рддрд╣рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣рдорд╛рд░реЗ рдХрд┐рд╕реА рдХрд╛рдо рдХреА рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рд╣рдо рдЗрдВрдЬрди рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕реНрдерд┐рддрд┐ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╕рдВрднрд╡рддрдГ рдХрд╛рд░ рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╢рд╛рд░реАрд░рд┐рдХ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рднреА рдареАрдХ рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИ. CodeGym рдкрд░ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рднреА рд╣реИ ред4. рдмрд╣реБрд░реВрдкрддрд╛ рдХреНрдпрд╛ рд╣реИ?
рдмрд╣реБрд░реВрдкрддрд╛ рд╡рд╕реНрддреБ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрд┐рдирд╛, рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд╣ рд░рд╣рд╛ рд╣реИ, "рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ - рдХрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди"ред рдмрд╣реБрд░реВрдкрддрд╛ рдХреЗ рд╕рд╛рде, рдЖрдк рд╕рд╛рдЭрд╛ рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкрд╢реБ рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреЛ рд╡рдВрд╢рдЬ рд╣реИрдВ: рдХреБрддреНрддрд╛ рдФрд░ рдмрд┐рд▓реНрд▓реАред рд╕рд╛рдорд╛рдиреНрдп рдкрд╢реБ рд╡рд░реНрдЧ рдореЗрдВ рд╕рднреА рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╡реНрдпрд╡рд╣рд╛рд░, рдзреНрд╡рдирд┐ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдо рдмрд╣реБрд░реВрдкреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╣рдореЗрдВ рдкрд╢реБ рд╡рд░реНрдЧ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣рд░ рдЪреАрдЬ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ "рдзреНрд╡рдирд┐ рдмрдирд╛рдиреЗ" рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:List<Animal> animals = Arrays.asList(new Cat(), new Dog(), new Cat());
animals.forEach(animal -> animal.makeSound());
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдмрд╣реБрд░реВрдкрддрд╛ рд╕рд╣рд╛рдпрдХ рд╣реИред рдФрд░ рдпрд╣ рдмрд╣реБрд░реВрдкреА (рдЕрддрд┐рднрд╛рд░рд┐рдд) рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ
рдЬрд╛рд╡рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╢реНрди
5. Java рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреНрдпрд╛ рд╣реИ?
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ:- рдЬрдм рдХреЛрдИ рдирдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
- рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдПрдХ рд╡рд┐рдзрд┐ рдХреА рддрд░рд╣ рд╣реИред рдЗрд╕рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВ рдХрд┐ рдХреЛрдИ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИ (рд╢реВрдиреНрдп рд╕рд╣рд┐рдд) рдФрд░ рдЗрд╕рдХрд╛ рдирд╛рдо рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХреЗ рд╕рдорд╛рди рд╣реИред
- рдпрджрд┐ рдХреЛрдИ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдПрдХ рдЦрд╛рд▓реА рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдпрджрд┐ рдЖрдк рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдПрдХ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
6. рдХреМрди рд╕реЗ рджреЛ рд╡рд░реНрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдирд╣реЗрд░рд┐рдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ?
рдЯреНрд░рд┐рдХ рдкреНрд░рд╢реНрдиреЛрдВ рд╕реЗ рдореВрд░реНрдЦ рдордд рдмрдиреЛ - рдРрд╕реА рдХреЛрдИ рдХрдХреНрд╖рд╛ рдирд╣реАрдВ рд╣реИред рд╕рднреА рд╡рд░реНрдЧ рд╡рд╕реНрддреБ рд╡рд░реНрдЧ рдХреЛ рдпрд╛ рддреЛ рд╕реАрдзреЗ рдпрд╛ рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ!7. рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреНрдпрд╛ рд╣реИ?
рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╢реНрди рд╣реИред рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдПрдХ рдЪрд░ рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЬрдм рддрдХ рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ рддрдм рддрдХ рдореМрдЬреВрдж рд╣реИред рдЬреИрд╕реЗ рд╣реА рдирд┐рд╖реНрдкрд╛рджрди рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ рдореБрдЦреНрдп () рд╡рд┐рдзрд┐ рдореЗрдВ helloMessage рдирд╛рдордХ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:public static void main(String[] args) {
String helloMessage;
helloMessage = "Hello, World!";
System.out.println(helloMessage);
}
8. рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдХреНрдпрд╛ рд╣реИ?
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдПрдХ рдЪрд░ рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рддрдм рддрдХ рдореМрдЬреВрдж рд╣реИ рдЬрдм рддрдХ рдХреЛрдИ рд╡рд╕реНрддреБ рдореМрдЬреВрдж рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмреА рд╡рд░реНрдЧ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдЖрд╡реГрддреНрддрд┐ рдЪрд░ рд╣реИрдВ - рдЕрдореГрдд рд▓реЛрдб рдФрд░ рдореИрдХреНрд╕ рдиреЗрдХреНрдЯрд░ рд▓реЛрдб:public class Bee {
/**
* Current nectar load
*/
private double nectarLoad;
/**
* Maximum nectar that can the bee can collect.
*/
private double maxNectarLoad = 20.0;
...
}
9. рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ рдХреНрдпрд╛ рд╣реИрдВ?
рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ рдХрдХреНрд╖рд╛рдУрдВ, рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдЪрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд╣реИред рдкрд╣реБрдБрдЪ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдХреНрд░рдо рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╢реЛрдзрдХ рдореМрдЬреВрдж рд╣реИрдВ:private
- рдЗрд╕ рдПрдХреНрд╕реЗрд╕ рдореЙрдбрд┐рдлрд╛рдпрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдореЗрдердбреНрд╕, рдлреАрд▓реНрдбреНрд╕ рдФрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣реБрдВрдЪ рдЙрд╕ рд╡рд░реНрдЧ рддрдХ рд╕реАрдорд┐рдд рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредpackage-private (default)
- рдпрд╣ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд╣реБрдВрдЪ рд╕реНрддрд░ рд╣реИред рдкрд╣реБрдБрдЪ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдХреЗрдЬ рддрдХ рд╕реАрдорд┐рдд рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ, рд╡рд┐рдзрд┐, рдЪрд░ рдпрд╛ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредprotected
- рдпрд╣ рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ рд╕рдорд╛рди рдкрд╣реБрдВрдЪ рд╕реНрддрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрд╢реЛрдзрдХpackage-private
рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИ редprotected
public
тАФ рдЗрд╕ рдкрд╣реБрдБрдЪ рд╕реНрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкрд╣реБрдБрдЪ рд╕реНрддрд░ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреВрд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдкреВрд░реНрдг рдкрд╣реБрдБрдЪ рд╣реИред
10. рдореЗрдердб рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ?
рд╣рдо рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдХреЛрдИ рдЪрд╛рдЗрд▓реНрдб рдХреНрд▓рд╛рд╕ рдЕрдкрдиреЗ рдкреИрд░реЗрдВрдЯ рдХреНрд▓рд╛рд╕ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдЕрдЧрд░ рд╣рдореЗрдВ рднреА рд╡рд╣реА рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдкреЗрд░реЗрдВрдЯ рдореЗрдердб рдореЗрдВ рд╣реИ, рддреЛ рд╣рдо рдЪрд╛рдЗрд▓реНрдб рдореЗрдВ super.methodName() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреИрд░реЗрдВрдЯ рдореЗрдердб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдЕрдкрдирд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрд╡рд╢реНрдп рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:- рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
- рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
11. рдореЗрдердб рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдХреНрдпрд╛ рд╣реИрдВ?
рдПрдХ рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╡рд┐рдзрд┐ рдХреЗ рдирд╛рдо рдФрд░ рддрд░реНрдХреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИ рдЬреЛ рд╡рд┐рдзрд┐ рд▓реЗрддрд╛ рд╣реИред рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рджреМрд░рд╛рди рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред12. рдореЗрдердб рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ?
рдореЗрдердб рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдмрд╣реБрд░реВрдкрддрд╛ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдХ рд╣реА рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ:- рд╡рд╣реА рдирд╛рдо
- рдЕрд▓рдЧ рддрд░реНрдХ
- рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
ArrayList
рд╡рд░реНрдЧ рдХреА add()
рд╡рд┐рдзрд┐ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╣рдо рдЗрдирдкреБрдЯ рддрд░реНрдХреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
add(Object o)
- рдпрд╣ рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╡рд╕реНрддреБ рдЬреЛрдбрд╝рддреА рд╣реИadd(int index, Object o)
- рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдЬреЛрдбрд╝рддреА рд╣реИadd(Collection<Object> c)
- рдпрд╣ рд╡рд┐рдзрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЬреЛрдбрд╝рддреА рд╣реИadd(int index, Collection<Object> c)
- рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реВрдЪрдХрд╛рдВрдХ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЬреЛрдбрд╝рддреА рд╣реИред
13. рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрдпрд╛ рд╣реИ?
рдЬрд╛рд╡рд╛ рдПрдХрд╛рдзрд┐рдХ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕реАрдорд╛ рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЙрд╕ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдЬрд┐рд╕реЗ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ;) рд▓рдВрдмреЗ рд╕рдордп рддрдХ, рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХреЗрд╡рд▓ рддрд░реАрдХреЗ рдереЗред рдЗрд╕ рдЙрддреНрддрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЖрдЗрдП рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
public interface Animal {
void makeSound();
void eat();
void sleep();
}
рдХреБрдЫ рд╡рд┐рд╡рд░рдг рдЗрд╕рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ:
- рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╕рднреА рд╡рд┐рдзрд┐рдпрд╛рдБ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рд╕рд╛рд░ рд╣реИрдВ
- рд╕рднреА рдЪрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рдЕрдВрддрд┐рдо рд╣реИрдВ
- рдХрдХреНрд╖рд╛рдПрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдирд╣реАрдВ рд╣реИрдВ (рдпрд╛рдиреА рд╣рдо рд╡рд┐рд╕реНрддреГрдд рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдХрдХреНрд╖рд╛рдПрдВ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИрдВ (рдпрд╛рдиреА рд╣рдо рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреНрд╕ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЬрд┐рддрдиреЗ рдЪрд╛рд╣реЗрдВ рдЙрддрдиреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
public class Cat implements Animal {
public void makeSound() {
// Method implementation
}
public void eat() {
// Implementation
}
public void sleep() {
// Implementation
}
}
14. рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐ рдХреНрдпрд╛ рд╣реИ?
рдЕрдм рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд░реАрдХреЛрдВ рдХреАред рдпреЗ рдХрд┐рд╕рд▓рд┐рдП рд╣реИрдВ? рд╡реЗ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИрдВ? рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ "рджреЛрдиреЛрдВ рд╣рд╛рдереЛрдВ" рдХреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ? рдЦреИрд░, рдПрдХ рдУрд░, рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА: рд▓реИрдореНрдмреНрдбрд╛ рдФрд░ рд╕реНрдЯреНрд░реАрдо рдПрдкреАрдЖрдИред рджреВрд╕рд░реА рдУрд░, рдпрд╣ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдХрд┐ рдЬрд╛рд╡рд╛ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рд┐рджреНрдз рд╣реИ - рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдХреБрдЫ рдирдП рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рддрд░рд╣ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд░реАрдХреЗ рдЖрдПред рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╡рд┐рдзрд┐ рд╣реИ, рдЬрд┐рд╕реЗdefault
рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред stream()
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдкреНрд░рд╕рд┐рджреНрдз рд╡рд┐рдзрд┐ Collection
ред рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЛ, рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЙрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИред forEach()
рдпрд╛ рдореЗрдВ рднреА рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рд╡рд┐рдзрд┐Iterable
рдЗрдВрдЯрд░рдлреЗрд╕ред рдпрд╣ рддрдм рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛ рдЬрдм рддрдХ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд░реАрдХреЗ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗ рдЧрдПред рд╡реИрд╕реЗ, рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдВ CodeGym рдкрд░ рднреА рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ ред
15. рдлрд┐рд░ рд╣рдо рджреЛ рд╕рдорд╛рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ?
рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд┐рдЫрд▓рд╛ рдЙрддреНрддрд░ рдПрдХ рдФрд░ рдкреНрд░рд╢реНрди рдкреВрдЫрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдЖрдк рдПрдХ рд╣реА рддрд░реАрдХреЗ рд╕реЗ рджреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ? рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВ:interface A {
default void foo() {
System.out.println("Foo A");
}
}
interface B {
default void foo() {
System.out.println("Foo B");
}
}
рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдЗрди рджреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдП рдпрд╛ рдмреА рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдХреИрд╕реЗ рдЪреБрдирддреЗ рд╣реИрдВ? рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдорд╛рдг рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ A.super.foo()
:
public class C implements A, B {
public void fooA() {
A.super.foo();
}
public void fooB() {
B.super.foo();
}
}
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд┐рдзрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА fooA()
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧреА , рдЬрдмрдХрд┐ рд╡рд┐рдзрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧреА редfoo()
A
fooB()
foo()
B
16. рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐рдпрд╛рдБ рдФрд░ рд╡рд░реНрдЧ рдХреНрдпрд╛ рд╣реИрдВ?
рдЬрд╛рд╡рд╛ рдореЗрдВ,abstract
рдПрдХ рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрдж рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕реЗ abstract
рд╕рд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд┐рдирд╛ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдпрд╣ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдХреАрд╡рд░реНрдб рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
public abstract void foo();
рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕реЗ abstract
рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рднреА рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
public abstract class A {
}
рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдореЗрдВ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ:
- рдЖрдк рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ
- рдЗрд╕рдореЗрдВ рд╕рд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ
- рдЗрд╕рдореЗрдВ рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐рдпрд╛рдБ рднреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ
17. String, StringBuilder рдФрд░ StringBuffer рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
String
рдорд╛рди рдирд┐рд░рдВрддрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреВрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВред рдЬреИрд╕реЗ рд╣реА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рд╡рд╣ рдЗрд╕ рдкреВрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдФрд░ рдЖрдк рдЗрд╕реЗ рдорд┐рдЯрд╛ рдирд╣реАрдВ рд╕рдХрддреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
String name = "book";
рдЪрд░ рдирд┐рд░рдВрддрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреВрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ рдирд╛рдо рдЪрд░ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ:
name = "pen";
рдирд┐рд░рдВрддрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреВрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рджреЛрдиреЛрдВ рдорд╛рди рд╡рд╣реАрдВ рд░рд╣рддреЗ рд╣реИрдВред рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдлрд░:
String
рдорд╛рди рд╕реНрдЯреИрдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рдорд╛рди рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирдпрд╛ рдорд╛рди рдкреБрд░рд╛рдиреЗ рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛редString Buffer
рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред- рдереНрд░реЗрдб рд╕реЗрдлреНрдЯреА рдХреЗ рдХрд╛рд░рдг рдЗрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдЦрд░рд╛рдм рд╣реИред
StringBuffer name = тАЬbookтАЭ;
рдЬреИрд╕реЗ рд╣реА рдирд╛рдо рдЪрд░ рдХрд╛ рдорд╛рди рдмрджрд▓рддрд╛ рд╣реИ, рд╕реНрдЯреИрдХ рдореЗрдВ рдорд╛рди рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ: рд╕реНрдЯреНрд░рд┐рдВрдЧрдмрд┐рд▓реНрдбрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рд╣реИ StringBuffer
, рдХреЗрд╡рд▓ рдпрд╣ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред рдирддреАрдЬрддрди, рдпрд╣ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬ рд╣реИ StringBuffer
ред
18. рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
рд╕рд╛рд░ рд╡рд░реНрдЧ:- рдПрдмреНрд╕рдЯреНрд░реИрдХреНрдЯ рдХреНрд▓рд╛рд╕реЗрд╕ рдореЗрдВ рдПрдХ рдбрд┐рдлреЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛрддрд╛ рд╣реИред рд╣рд░ рдмрд╛рд░ рд╕рд╛рд░ рд╡рд░реНрдЧ рдХрд╛ рд╡рдВрд╢рдЬ рдмрдирдиреЗ рдкрд░ рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╡реЗ рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдЧреИрд░-рдЕрдореВрд░реНрдд рджреЛрдиреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХреЗ рдкрд╛рд╕ рд╕рд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред
- рдПрдХ рд╡рд░реНрдЧ рдЬреЛ рдПрдХ рд╕рд╛рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рдХреЗрд╡рд▓ рд╕рд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдкреНрд░рд╢реНрди # 5 рджреЗрдЦреЗрдВ)ред
- рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХреЛрдИ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдХреЗрд╡рд▓ рд╕рд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред
- рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред
- рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
19. рдРрд░реЗ O(1) рдореЗрдВ рдПрд▓рд┐рдореЗрдВрдЯ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдХреНрдпреЛрдВ рд╣реИ?
рдпрд╣ рдкреНрд░рд╢реНрди рд╕рдЪрдореБрдЪ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдореЗрдВ рдкреВрдЫрд╛ рдЧрдпрд╛ рдерд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдмрд╛рдж рдореЗрдВ рд╕реАрдЦрд╛, рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рджреЗрдЦрдирд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдХреИрд╕рд╛ рд╕реЛрдЪрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рдЬреНрдЮрд╛рди рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдорд╣рддреНрд╡ рдмрд╣реБрдд рдХрдо рд╣реИред рдЗрд╕реЗ рдЬрд╛рдирдирд╛ рд╣реА рдХрд╛рдлреА рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ O(1) "рдирд┐рд░рдВрддрд░ рд╕рдордп" рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреА рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрддрди рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдкрджрдирд╛рдо рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВред рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПint
, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:
int[] intArray = new int[100];
рдЗрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рдХрдИ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
- рдЬрдм рдПрдХ рд╕рд░рдгреА рдШреЛрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЬреНрдЮрд╛рдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдЬреНрдЮрд╛рдд рд╣реИ, рддреЛ рд╕рд░рдгреА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдЬреНрдЮрд╛рдд рд╣реИред
- рд╕рдВрдкреВрд░реНрдг рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рдЬреНрдЮрд╛рдд рд╣реИред
рддреЛ рд╣рдо ArrayList рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп O (1) рдкрд░ рдХреИрд╕реЗ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВ?
рдпрд╣ рдкреНрд░рд╢реНрди рддреБрд░рдВрдд рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИред рд╕рдЪреНрдЪрд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдПрдХ рдРрд╕реЗ рдРрд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрджрд┐рдо рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ (рд╕реГрдЬрди рдХреЗ рд╕рдордп) рддрддреНрд╡ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрдХрд╛рд░ред рд▓реЗрдХрд┐рди рд╣рдо рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд┐рд░рд╛рд╕рдд рдкрджрд╛рдиреБрдХреНрд░рдо рд╣реИ рдФрд░ рд╣рдо рдЯрд╛рдЗрдк рдП рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдмреА, рд╕реА, рдФрд░ рдбреА) рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:List<A> list = new ArrayList();
list.add(new B());
list.add(new C());
list.add(new D());
list.add(new B());
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдХреЛрд╢рд┐рдХрд╛ рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ? рдЖрдЦрд┐рд░рдХрд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдЕрд▓рдЧ рд╣реЛрдЧреА, рд╕рдВрднрд╡рддрдГ рд╡рд┐рднрд┐рдиреНрди рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рдеред рдХреНрдпрд╛ рдХрд░реЗрдВ? рдпрд╣рд╛рдВ рд╕рд╡рд╛рд▓ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЛ рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рд╕реАрдзреЗ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╕рднреА рд╕рдиреНрджрд░реНрднреЛрдВ рдХрд╛ рдПрдХ рд╣реА рдЖрдХрд╛рд░ рд╣реИ, рдФрд░ рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИред рдирддреАрдЬрддрди, рд╣рдо рдкрд┐рдЫрд▓реЗ рдкреНрд░рд╢реНрди рдХреА рддрд░рд╣ рд╣реА рдпрд╣рд╛рдВ рдкрддреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред
21. рдСрдЯреЛрдмреЙрдХреНрд╕рд┐рдВрдЧ рдФрд░ рдЕрдирдмреЙрдХреНрд╕рд┐рдВрдЧ
рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдкреГрд╖реНрдарднреВрдорд┐: JDK 5 рдореЗрдВ рдСрдЯреЛрдмреЙрдХреНрд╕рд┐рдВрдЧ рдФрд░ рдЕрдирдмреЙрдХреНрд╕рд┐рдВрдЧ рдХреБрдЫ рдореБрдЦреНрдп рдирд╡рд╛рдЪрд╛рд░ рд╣реИрдВред рдСрдЯреЛрдмреЙрдХреНрд╕рд┐рдВрдЧ рдПрдХ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд░реИрдкрд░ рд╡рд░реНрдЧ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред рдЕрдирдмреЙрдХреНрд╕рд┐рдВрдЧ рдСрдЯреЛрдмреЙрдХреНрд╕рд┐рдВрдЧ рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд┐рдкрд░реАрдд рд╣реИред рдпрд╣ рдПрдХ рдЖрд╡рд░рдг рд╡рд░реНрдЧ рдХреЛ рдЖрджрд┐рдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдПрдХ рд░реИрдкрд░ рдХрд╛ рдореВрд▓реНрдп рд╣реИnull
, рддреЛ NullPointerException
рдЕрдирдмреЙрдХреНрд╕рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдПрдХ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрджрд┐рдо рдФрд░ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╡рд░рдг
рдкреНрд░рд╛рдЪреАрди | рдЖрд╡рд░рдг рд╡рд░реНрдЧ |
---|---|
рдмреВрд▓рд┐рдпрди | рдмреВрд▓рд┐рдпрди |
int рдпрд╣рд╛рдБ | рдкреВрд░реНрдгрд╛рдВрдХ |
рдмрд╛рдЗрдЯ | рдмрд╛рдЗрдЯ |
рдЪрд╛рд░ | рдЪрд░рд┐рддреНрд░ |
рддреИрд░рдирд╛ | рддреИрд░рдирд╛ |
рд▓рдВрдмрд╛ | рд▓рдВрдмрд╛ |
рдЫреЛрдЯрд╛ | рдЫреЛрдЯрд╛ |
рджреЛрд╣рд░рд╛ | рджреЛрд╣рд░рд╛ |
// рдСрдЯреЛрдмреЙрдХреНрд╕рд┐рдВрдЧ рд╣реЛрддреА рд╣реИ:
-
рдПрдХ рд░реИрдкрд░ рд╡рд░реНрдЧ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рдЖрджрд┐рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп:
рдЬрд╛рд╡рд╛ 5 рд╕реЗ рдкрд╣рд▓реЗ:
// Manual boxing (the way it was BEFORE Java 5). public void boxingBeforeJava5() { Boolean booleanBox = new Boolean(true); Integer intBox = new Integer(3); // And so on for other types } After Java 5: // Automatic boxing (the way it became in Java 5). public void boxingJava5() { Boolean booleanBox = true; Integer intBox = 3; // And so on for other types }
-
рдЬрдм рдПрдХ рдЖрджрд┐рдо рдХреЛ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд░реИрдкрд░ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ:
public void exampleOfAutoboxing() { long age = 3; setAge(age); } public void setAge(Long age) { this.age = age; }
// рдЕрдирдмреЙрдХреНрд╕рд┐рдВрдЧ рд╣реЛрддреА рд╣реИ:
-
рдЬрдм рд╣рдо рдПрдХ рдЖрджрд┐рдо рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рд╡рд░реНрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддреЗ рд╣реИрдВ:
// BEFORE Java 5: int intValue = new Integer(4).intValue(); double doubleValue = new Double(2.3).doubleValue(); char c = new Character((char) 3).charValue(); boolean b = Boolean.TRUE.booleanValue(); // And after JDK 5: int intValue = new Integer(4); double doubleValue = new Double(2.3); char c = new Character((char) 3); boolean b = Boolean.TRUE;
-
рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рдиред рдСрдкрд░реЗрд╢рди рдХреЗрд╡рд▓ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдирдмреЙрдХреНрд╕рд┐рдВрдЧ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
// BEFORE Java 5: Integer integerBox1 = new Integer(1); Integer integerBox2 = new Integer(2); // A comparison used to require this: integerBox1.intValue() > integerBox2.intValue() // In Java 5 integerBox1 > integerBox2
-
рдПрдХ рд░реИрдкрд░ рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдПрдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдЖрджрд┐рдо рд▓реЗрддрд╛ рд╣реИ:
public void exampleOfAutoboxing() { Long age = new Long(3); setAge(age); } public void setAge(long age) { this.age = age; }
22. рдлрд╛рдЗрдирд▓ рдХреАрд╡рд░реНрдб рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рдХреАрд╡рд░реНрдбfinal
рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрд░, рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдЕрдВрддрд┐рдо рдЪрд░ рдХрд╛ рдорд╛рди рдкреНрд░рд╛рд░рдВрдн рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред
- рдПрдХ рдЕрдВрддрд┐рдо рд╡рд░реНрдЧ рдмрд╛рдБрдЭ рд╣реИ :) рдЗрд╕рдореЗрдВ рдмрдЪреНрдЪреЗ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред
- рдПрдХ рд╡рдВрд╢ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдВрддрд┐рдо рдЪрд░
рдЬрд╛рд╡рд╛ рд╣рдореЗрдВ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рджреЗрддрд╛ рд╣реИ:- рдЖрдк рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЖрд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдЖрдк рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддреБрд░рдВрдд рдПрдХ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
public class FinalExample {
// A static final variable that is immediately initialized:
final static String FINAL_EXAMPLE_NAME = "I'm likely the final one";
// A final variable that is not initialized, but will only work if you
// initialize it in the constructor:
final long creationTime;
public FinalExample() {
this.creationTime = System.currentTimeMillis();
}
public static void main(String[] args) {
FinalExample finalExample = new FinalExample();
System.out.println(finalExample.creationTime);
// The final FinalExample.FINAL_EXAMPLE_NAME field cannot be accessed
// FinalExample.FINAL_EXAMPLE_NAME = "Not you're not!";
// The final Config.creationTime field cannot be accessed
// finalExample.creationTime = 1L;
}
}
рдХреНрдпрд╛ рдЕрдВрддрд┐рдо рдЪрд░ рдХреЛ рд╕реНрдерд┐рд░ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдЪреВрдВрдХрд┐ рд╣рдо рдЕрдВрддрд┐рдо рдЪрд░ рдХреЗ рд▓рд┐рдП рдирдП рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдирд┐рд░рдВрддрд░ рдЪрд░ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ: рдпрджрд┐ рдЪрд░ рдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИimmutable
, рддреЛ, рд╣рд╛рдБ, рдпрд╣ рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ mutable
, рдпрд╛рдиреА рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╣реИ, рддреЛ рдПрдХ final
рдЪрд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рд╡рд╕реНрддреБ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдЗрд╕ рдХрд╛рд░рдг рдЗрд╕реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЕрдВрддрд┐рдо рдЪрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдерд┐рд░ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
public class FinalExample {
// Immutable final variables
final static String FINAL_EXAMPLE_NAME = "I'm likely the final one";
final static Integer FINAL_EXAMPLE_COUNT = 10;
// Mutable final variables
final List<String> addresses = new ArrayList();
final StringBuilder finalStringBuilder = new StringBuilder("Constant?");
}
рд╕реНрдерд╛рдиреАрдп рдЕрдВрддрд┐рдо рдЪрд░
рдЬрдмfinal
рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рднреАрддрд░ рдПрдХ рдЪрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ local final
рдЪрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
public class FinalExample {
public static void main(String[] args) {
// You can do this
final int minAgeForDriveCar = 18;
// Or you can do this, in a for-each loop:
for (final String arg : args) {
System.out.println(arg);
}
}
}
рд╣рдо рдЕрдВрддрд┐рдо рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдП рдЧрдП рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд▓реВрдк рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдмрд╛рдж рдПрдХ рдирдпрд╛ рдЪрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рд▓реВрдк рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓-рдЯрд╛рдЗрдо рдПрд░рд░ рдорд┐рд▓реЗрдЧрд╛ред
// The final local j variable cannot be assigned
for (final int i = 0; i < args.length; i ++) {
System.out.println(args[i]);
}
рдЕрдВрддрд┐рдо рд╡рд░реНрдЧ
рдШреЛрд╖рд┐рдд рд╡рд░реНрдЧ рдХреЛfinal
рдмрдврд╝рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд╣реЗрдВ рддреЛ рдХреЛрдИ рдЕрдиреНрдп рд╡рд░реНрдЧ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред final
JDK рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИ String. рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдХрджрдо рдЗрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рд╣реИ final
, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ рд╣реИ:
public final class FinalExample {
}
// Compilation error!
class WantsToInheritFinalClass extends FinalExample {
}
рдЕрдВрддрд┐рдо рддрд░реАрдХреЗ
рдЬрдм рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдареАрдХ рд╣реИ?) рдЪрд╛рдЗрд▓реНрдб рдХреНрд▓рд╛рд╕ рдореЗрдВ final рдореЗрдердб рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдпреЛрдЧ рд╕реЗ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рд╕ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ () рдФрд░ рд╕реВрдЪрд┐рдд () рд╡рд┐рдзрд┐рдпрд╛рдБ рдЕрдВрддрд┐рдо рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдиреНрд╣реЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИредpublic class FinalExample {
public final String generateAddress() {
return "Some address";
}
}
class ChildOfFinalExample extends FinalExample {
// Compilation error!
@Override
public String generateAddress() {
return "My OWN Address";
}
}
рдЬрд╛рд╡рд╛ рдореЗрдВ рдлрд╛рдЗрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдБ рдХрд░реЗрдВ
- рдХреБрдЫ рд╡рд░реНрдЧ-рд╕реНрддрд░реАрдп рд╕реНрдерд┐рд░рд╛рдВрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП final рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ;
- рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдЪрд░ рдмрдирд╛рдПрдБ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдСрдмреНрдЬреЗрдХреНрдЯ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреБрдг рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рд▓реЙрдЧрд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рдиреНрд╣рд┐рдд рдХрд░реЗрдВред
- рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред
- рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрд╕рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдореЗрдВ рди рдмрджрд▓реЗ, рддреЛ рд╡рд┐рдзрд┐ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ
final
ред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред
23. рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдФрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рдХрд╛рд░ рдХреНрдпрд╛ рд╣реИрдВ?
рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓
рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдПрдБ рд╡реЗ рд╡рд╕реНрддреБрдПрдБ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдирдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЪрд░ рдХреЛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧрдмрд┐рд▓реНрдбрд░ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧрдмрдлрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг:public class MutableExample {
private String address;
public MutableExample(String address) {
this.address = address;
}
public String getAddress() {
return address;
}
// This setter can change the name field
public void setAddress(String address) {
this.address = address;
}
public static void main(String[] args) {
MutableExample obj = new MutableExample("First address");
System.out.println(obj.getAddress());
// We are updating the name field, so this is a mutable object
obj.setAddress("Updated address");
System.out.println(obj.getAddress());
}
}
рдЕрдбрд┐рдЧ
рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдПрдБ рд╡реЗ рд╡рд╕реНрддреБрдПрдБ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдирдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЪрд░ рд╡рд╕реНрддреБ рдХреЗ рдмрдирдиреЗ рдХреЗ рдмрд╛рдж рдирд╣реАрдВ рдмрджрд▓реЗ рдЬрд╛ рд╕рдХрддреЗред рд╣реИрд╢ рдореИрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдХреБрдВрдЬреА, рдХреНрдпрд╛ рдЖрдкрдХреЛ рдирд╣реАрдВ рд▓рдЧрддрд╛? :) рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдкреВрд░реНрдгрд╛рдВрдХ, рдбрдмрд▓, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдЙрджрд╛рд╣рд░рдг:// We'll make this class final so no one can change it
public final class ImmutableExample {
private String address;
ImmutableExample(String address) {
this.address = address;
}
public String getAddress() {
return address;
}
// We remove the setter
public static void main(String[] args) {
ImmutableExample obj = new ImmutableExample("Old address");
System.out.println(obj.getAddress());
// There is no way to change this field, so it is an immutable object
// obj.setName("new address");
// System.out.println(obj.getName());
}
}
рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдФрд░ рдЙрддреНрддрд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдЧрд┐рдЯрд╣рдм рдкрд░ рдореЗрд░рд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдЬрд╛рд╡рд╛ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ 50 рдиреМрдХрд░реА рдХреЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░ред рднрд╛рдЧ 2