CodeGym/Java Blog/рдЕрдирд┐рдпрдорд┐рдд/рдЬрд╛рд╡рд╛ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ 50 рдиреМрдХрд░реА рдХреЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╢реНрди рдФрд░ рдЙ...
John Squirrels
рд╕реНрддрд░ 41
San Francisco

рдЬрд╛рд╡рд╛ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ 50 рдиреМрдХрд░реА рдХреЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░ред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛

рдЕрдирд┐рдпрдорд┐рдд рдЧреНрд░реБрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд
рд╕рджрд╕реНрдп
рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рджреЗрд╡рд┐рдпреЛ рдФрд░ рд╕рдЬреНрдЬрдиреЛ, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░! рдЖрдЗрдП рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдХрд┐рд╕ рдЪреАрдЬ рдХреА рддреИрдпрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдкрд╣рд▓реА рдмрд╛рд░ рдЗрди рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдпрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдордп рд╣реИред рдЬрд╛рд╡рд╛ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ 50 рдиреМрдХрд░реА рдХреЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░ред  рднрд╛рдЧ 1 - 1 рдореБрдЭреЗ OOP, Java рд╕рд┐рдВрдЯреИрдХреНрд╕, Java рдЕрдкрд╡рд╛рдж, рд╕рдВрдЧреНрд░рд╣ рдФрд░ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдПрдХ рд╡реНрдпрд╛рдкрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖ, рдЬрд┐рд╕реЗ рдореИрдВ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдХрдИ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реВрдБрдЧрд╛ред рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдХрд╡рд░ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреА рдкрд╣рд▓реА рдиреМрдХрд░реА рдЦреЛрдЬрдиреЗ рдХреА рддреИрдпрд╛рд░реА рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдиреАрдВрд╡ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧреАред рд╕рд░реНрд╡реЛрддреНрддрдо рд╕рдордЭ рдФрд░ рдкреНрд░рддрд┐рдзрд╛рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдиреНрдп рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рднреА рдЦреЛрдЬрдмреАрди рдХреА рдЬрд╛рдПред рдЖрдк рдХрд┐рд╕реА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЛрдгреЛрдВ рд╕реЗ рджреЗрдЦ рдХрд░ рдЙрд╕рдХреА рдЧрд╣рд░реА рд╕рдордЭ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд╣рддреНрд╡рдкреВрд░реНрдг:рд╣рдо рдХреЗрд╡рд▓ рд╕рдВрд╕реНрдХрд░рдг 8 рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рд╕рдВрд╕реНрдХрд░рдг 9, 10, 11, 12 рдФрд░ 13 рдореЗрдВ рдЖрдП рд╕рднреА рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдкрд░ рдпрд╣рд╛рдВ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрддреНрддрд░реЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░/рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ ред рдЕрдкрдиреЗ рдкрдврд╝рдиреЗ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВред рдЪрд▓ рджрд░!

рдЬрд╛рд╡рд╛ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░: рдУрдУрдкреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди

1. рдЬрд╛рд╡рд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдХреНрдпрд╛ рд╣реИрдВ?

рдЙрддреНрддрд░:
  1. рдУрдУрдкреА рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ:

    1. рд╡рд╕реНрддреБ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕
    2. рд╡рд┐рд░рд╛рд╕рдд
    3. рдХреИрдкреНрд╕реВрд▓реАрдХрд░рдг
    4. рдмрд╣реБрд░реВрдкрддрд╛
    5. рдорддрд┐рд╣реАрдирддрд╛
  2. рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо: рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рдЬреЗрд╡реАрдПрдо (рдЬрд╛рд╡рд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

  3. рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди: рдЬрд╕реНрдЯ-рдЗрди-рдЯрд╛рдЗрдо (JIT) рдХрдВрдкрд╛рдЗрд▓рд░ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдЬреЗрдЖрдИрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рдмрд╛рдЗрдЯрдХреЛрдб рдХреЛ рдорд╢реАрди рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЬреЗрд╡реАрдПрдо рдирд┐рд╖реНрдкрд╛рджрди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред

  4. рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ: 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 рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреНрдпрд╛ рд╣реИ?

рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ:
  1. рдЬрдм рдХреЛрдИ рдирдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
  2. рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдПрдХ рд╡рд┐рдзрд┐ рдХреА рддрд░рд╣ рд╣реИред рдЗрд╕рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВ рдХрд┐ рдХреЛрдИ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИ (рд╢реВрдиреНрдп рд╕рд╣рд┐рдд) рдФрд░ рдЗрд╕рдХрд╛ рдирд╛рдо рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХреЗ рд╕рдорд╛рди рд╣реИред
  3. рдпрджрд┐ рдХреЛрдИ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдПрдХ рдЦрд╛рд▓реА рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  4. рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  5. рдпрджрд┐ рдЖрдк рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдПрдХ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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. рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ рдХреНрдпрд╛ рд╣реИрдВ?

рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ рдХрдХреНрд╖рд╛рдУрдВ, рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдЪрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд╣реИред рдкрд╣реБрдБрдЪ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдХреНрд░рдо рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╢реЛрдзрдХ рдореМрдЬреВрдж рд╣реИрдВ:
  1. private- рдЗрд╕ рдПрдХреНрд╕реЗрд╕ рдореЙрдбрд┐рдлрд╛рдпрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдореЗрдердбреНрд╕, рдлреАрд▓реНрдбреНрд╕ рдФрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣реБрдВрдЪ рдЙрд╕ рд╡рд░реНрдЧ рддрдХ рд╕реАрдорд┐рдд рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  2. package-private (default)- рдпрд╣ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд╣реБрдВрдЪ рд╕реНрддрд░ рд╣реИред рдкрд╣реБрдБрдЪ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдХреЗрдЬ рддрдХ рд╕реАрдорд┐рдд рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ, рд╡рд┐рдзрд┐, рдЪрд░ рдпрд╛ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  3. protected- рдпрд╣ рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ рд╕рдорд╛рди рдкрд╣реБрдВрдЪ рд╕реНрддрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрд╢реЛрдзрдХ package-privateрдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИ редprotected
  4. publicтАФ рдЗрд╕ рдкрд╣реБрдБрдЪ рд╕реНрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкрд╣реБрдБрдЪ рд╕реНрддрд░ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреВрд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдкреВрд░реНрдг рдкрд╣реБрдБрдЪ рд╣реИред
рдЬрд╛рд╡рд╛ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ 50 рдиреМрдХрд░реА рдХреЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░ред  рднрд╛рдЧ 1 - 2

10. рдореЗрдердб рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ?

рд╣рдо рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдХреЛрдИ рдЪрд╛рдЗрд▓реНрдб рдХреНрд▓рд╛рд╕ рдЕрдкрдиреЗ рдкреИрд░реЗрдВрдЯ рдХреНрд▓рд╛рд╕ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдЕрдЧрд░ рд╣рдореЗрдВ рднреА рд╡рд╣реА рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдкреЗрд░реЗрдВрдЯ рдореЗрдердб рдореЗрдВ рд╣реИ, рддреЛ рд╣рдо рдЪрд╛рдЗрд▓реНрдб рдореЗрдВ super.methodName() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреИрд░реЗрдВрдЯ рдореЗрдердб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдЕрдкрдирд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрд╡рд╢реНрдп рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
  • рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
  • рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

11. рдореЗрдердб рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдХреНрдпрд╛ рд╣реИрдВ?

рдЬрд╛рд╡рд╛ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ 50 рдиреМрдХрд░реА рдХреЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░ред  рднрд╛рдЧ 1 - 3рдПрдХ рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╡рд┐рдзрд┐ рдХреЗ рдирд╛рдо рдФрд░ рддрд░реНрдХреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИ рдЬреЛ рд╡рд┐рдзрд┐ рд▓реЗрддрд╛ рд╣реИред рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рджреМрд░рд╛рди рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред

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()AfooB()foo()B

16. рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐рдпрд╛рдБ рдФрд░ рд╡рд░реНрдЧ рдХреНрдпрд╛ рд╣реИрдВ?

рдЬрд╛рд╡рд╛ рдореЗрдВ, abstractрдПрдХ рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрдж рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕реЗ abstractрд╕рд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд┐рдирд╛ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдпрд╣ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдХреАрд╡рд░реНрдб рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
public abstract void foo();
рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕реЗ abstractрдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рднреА рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
public abstract class A {

}
рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдореЗрдВ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ:
  • рдЖрдк рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ
  • рдЗрд╕рдореЗрдВ рд╕рд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ
  • рдЗрд╕рдореЗрдВ рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐рдпрд╛рдБ рднреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ
рдПрдмреНрд╕рдЯреНрд░реИрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдмреНрд╕рдЯреНрд░реИрдХреНрдЯ рдХреНрд▓рд╛рд╕реЗрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИ (рдЯреЙрдЯреЛрд▓реЙрдЬреА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ) рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рдЕрд╡рд╕реНрдерд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ (рдпрд╛рдиреА, рддрд░реАрдХреЗ рдФрд░ рдЪрд░)ред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рднрд░рд╛ рдкрдбрд╝рд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЖрд╕рдкрд╛рд╕ рд╕рдм рдХреБрдЫред "рдкрд╢реБ", "рдХрд╛рд░", "рдЬреНрдпрд╛рдорд┐рддреАрдп рдЖрдХреГрддрд┐", рдФрд░ рдЗрд╕реА рддрд░рд╣ред

17. String, StringBuilder рдФрд░ StringBuffer рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?

Stringрдорд╛рди рдирд┐рд░рдВрддрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреВрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВред рдЬреИрд╕реЗ рд╣реА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рд╡рд╣ рдЗрд╕ рдкреВрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдФрд░ рдЖрдк рдЗрд╕реЗ рдорд┐рдЯрд╛ рдирд╣реАрдВ рд╕рдХрддреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
String name = "book";
рдЪрд░ рдирд┐рд░рдВрддрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреВрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ рдЬрд╛рд╡рд╛ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ 50 рдиреМрдХрд░реА рдХреЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░ред  рднрд╛рдЧ 1 - 4рдирд╛рдо рдЪрд░ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ:
name = "pen";
рдирд┐рд░рдВрддрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреВрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: рдЬрд╛рд╡рд╛ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ 50 рдиреМрдХрд░реА рдХреЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░ред  рднрд╛рдЧ 1 - 5рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рджреЛрдиреЛрдВ рдорд╛рди рд╡рд╣реАрдВ рд░рд╣рддреЗ рд╣реИрдВред рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдлрд░:
  • Stringрдорд╛рди рд╕реНрдЯреИрдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рдорд╛рди рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирдпрд╛ рдорд╛рди рдкреБрд░рд╛рдиреЗ рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред
  • String Bufferрд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред
  • рдереНрд░реЗрдб рд╕реЗрдлреНрдЯреА рдХреЗ рдХрд╛рд░рдг рдЗрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдЦрд░рд╛рдм рд╣реИред
рдЙрджрд╛рд╣рд░рдг:
StringBuffer name = тАЬbookтАЭ;
рдЬрд╛рд╡рд╛ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ 50 рдиреМрдХрд░реА рдХреЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░ред  рднрд╛рдЧ 1 - 6рдЬреИрд╕реЗ рд╣реА рдирд╛рдо рдЪрд░ рдХрд╛ рдорд╛рди рдмрджрд▓рддрд╛ рд╣реИ, рд╕реНрдЯреИрдХ рдореЗрдВ рдорд╛рди рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ: рдЬрд╛рд╡рд╛ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ 50 рдиреМрдХрд░реА рдХреЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░ред  рднрд╛рдЧ 1 - 7рд╕реНрдЯреНрд░рд┐рдВрдЧрдмрд┐рд▓реНрдбрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рд╣реИ StringBuffer, рдХреЗрд╡рд▓ рдпрд╣ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред рдирддреАрдЬрддрди, рдпрд╣ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬ рд╣реИ StringBufferред

18. рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?

рд╕рд╛рд░ рд╡рд░реНрдЧ:
  • рдПрдмреНрд╕рдЯреНрд░реИрдХреНрдЯ рдХреНрд▓рд╛рд╕реЗрд╕ рдореЗрдВ рдПрдХ рдбрд┐рдлреЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛрддрд╛ рд╣реИред рд╣рд░ рдмрд╛рд░ рд╕рд╛рд░ рд╡рд░реНрдЧ рдХрд╛ рд╡рдВрд╢рдЬ рдмрдирдиреЗ рдкрд░ рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╡реЗ рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдЧреИрд░-рдЕрдореВрд░реНрдд рджреЛрдиреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХреЗ рдкрд╛рд╕ рд╕рд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред
  • рдПрдХ рд╡рд░реНрдЧ рдЬреЛ рдПрдХ рд╕рд╛рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рдХреЗрд╡рд▓ рд╕рд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдкреНрд░рд╢реНрди # 5 рджреЗрдЦреЗрдВ)ред
рдЗрдВрдЯрд░рдлреЗрд╕:
  • рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХреЛрдИ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдХреЗрд╡рд▓ рд╕рд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред
  • рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред
  • рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

19. рдРрд░реЗ O(1) рдореЗрдВ рдПрд▓рд┐рдореЗрдВрдЯ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдпрд╣ рдкреНрд░рд╢реНрди рд╕рдЪрдореБрдЪ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдореЗрдВ рдкреВрдЫрд╛ рдЧрдпрд╛ рдерд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдмрд╛рдж рдореЗрдВ рд╕реАрдЦрд╛, рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рджреЗрдЦрдирд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдХреИрд╕рд╛ рд╕реЛрдЪрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рдЬреНрдЮрд╛рди рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдорд╣рддреНрд╡ рдмрд╣реБрдд рдХрдо рд╣реИред рдЗрд╕реЗ рдЬрд╛рдирдирд╛ рд╣реА рдХрд╛рдлреА рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ O(1) "рдирд┐рд░рдВрддрд░ рд╕рдордп" рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреА рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрддрди рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдкрджрдирд╛рдо рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВред рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП int, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:
int[] intArray = new int[100];
рдЗрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рдХрдИ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
  1. рдЬрдм рдПрдХ рд╕рд░рдгреА рдШреЛрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЬреНрдЮрд╛рдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдЬреНрдЮрд╛рдд рд╣реИ, рддреЛ рд╕рд░рдгреА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдЬреНрдЮрд╛рдд рд╣реИред
  2. рд╕рдВрдкреВрд░реНрдг рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рдЬреНрдЮрд╛рдд рд╣реИред
рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕ рд╕реЗрд▓ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реИ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдореЗрдореЛрд░реА рдХреЗ рдХрд┐рд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╕рд╛рди рд╣реИред рдХрдВрдкреНрдпреВрдЯрд░ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХрд╣рд╛рдБ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕реНрдерд╛рди рд╕рд░рдгреА рдХреЗ рд╢реБрд░реБрдЖрддреА рд╕реНрдерд╛рди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ + рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЧреБрдгрд╛ рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ред

рддреЛ рд╣рдо ArrayList рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп O (1) рдкрд░ рдХреИрд╕реЗ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВ?

рдпрд╣ рдкреНрд░рд╢реНрди рддреБрд░рдВрдд рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИред рд╕рдЪреНрдЪрд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдПрдХ рдРрд╕реЗ рдРрд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрджрд┐рдо рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ (рд╕реГрдЬрди рдХреЗ рд╕рдордп) рддрддреНрд╡ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрдХрд╛рд░ред рд▓реЗрдХрд┐рди рд╣рдо рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд┐рд░рд╛рд╕рдд рдкрджрд╛рдиреБрдХреНрд░рдо рд╣реИ рдФрд░ рдЬрд╛рд╡рд╛ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ 50 рдиреМрдХрд░реА рдХреЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░ред  рднрд╛рдЧ 1 - 8рд╣рдо рдЯрд╛рдЗрдк рдП рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдмреА, рд╕реА, рдФрд░ рдбреА) рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
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рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрд░, рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  1. рдЕрдВрддрд┐рдо рдЪрд░ рдХрд╛ рдорд╛рди рдкреНрд░рд╛рд░рдВрдн рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред
  2. рдПрдХ рдЕрдВрддрд┐рдо рд╡рд░реНрдЧ рдмрд╛рдБрдЭ рд╣реИ :) рдЗрд╕рдореЗрдВ рдмрдЪреНрдЪреЗ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред
  3. рдПрдХ рд╡рдВрд╢ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдордиреЗ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрд╡рд░ рдХрд┐рдпрд╛ рд╣реИред рдЕрдм рдФрд░ рдЧрд╣рд░рд╛ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рджреЗрддрд╛ рд╣реИред

рдЕрдВрддрд┐рдо рдЪрд░

рдЬрд╛рд╡рд╛ рд╣рдореЗрдВ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рджреЗрддрд╛ рд╣реИ:
  1. рдЖрдк рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЖрд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. рдЖрдк рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддреБрд░рдВрдд рдПрдХ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЕрдВрддрд┐рдо рдЪрд░реЛрдВ рдХреЗ рдЗрди рдЙрдкрдпреЛрдЧреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
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рдмрдврд╝рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд╣реЗрдВ рддреЛ рдХреЛрдИ рдЕрдиреНрдп рд╡рд░реНрдЧ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред finalJDK рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИ 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
рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ
  • рд▓реЛрдХрдкреНрд░рд┐рдп
  • рдирдпрд╛
  • рдкреБрд░рд╛рдирд╛
рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рд╛рдЗрди рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдЗрд╕ рдкреЗрдЬ рдкрд░ рдЕрднреА рддрдХ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ