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

рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдБ рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/rafadelnero/javaworld-challuters
рдмрд╣реБрд░реВрдкрддрд╛ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдФрд░ рд╡рд┐рд░рд╛рд╕рдд
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдмрд╣реБрд░реВрдкрддрд╛ рдФрд░ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдзреНрдпрд╛рди рд░рдЦрдиреЗ рд╡рд╛рд▓реА рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдмрд╣реБрд░реВрдкрддрд╛ рдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рд╡рд┐рд░рд╛рд╕рдд рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ред рдЖрдк рдЗрд╕реЗ рдиреАрдЪреЗ рдбреНрдпреВрдХ рдФрд░ Juggy
рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
public abstract class JavaMascot { public abstract void executeAction(); } public class Duke extends JavaMascot { @Override public void executeAction() { System.out.println("Punch!"); } } public class Juggy extends JavaMascot { @Override public void executeAction() { System.out.println("Fly!"); } } public class JavaMascotTest { public static void main(String... args) { JavaMascot dukeMascot = new Duke(); JavaMascot juggyMascot = new Juggy(); dukeMascot.executeAction(); juggyMascot.executeAction(); } }
рдЗрд╕ рдХреЛрдб рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:
Punch! Fly!
рдЪреВрдВрдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, Duke
рдФрд░ Juggy
рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХреНрдпрд╛ рдкрджреНрдзрддрд┐ рдПрдХ рдмрд╣реБрд░реВрдкрддрд╛ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░ рд░рд╣реА рд╣реИ? рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдФрд░ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдмрд╣реБрд░реВрдкрддрд╛ рдХреЗ рд░рд┐рд╢реНрддреЗ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рд╡рд┐рдзрд┐ рдХреЛ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╕рд╣реА рдмрд╣реБрд░реВрдкрддрд╛ рд╣реИред рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдПрдХ рд╣реА рд╡рд┐рдзрд┐ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдкреИрд░рд╛рдореАрдЯрд░ред рдмрд╣реБрд░реВрдкрддрд╛ рдПрдХ рд╡реНрдпрд╛рдкрдХ рд╢рдмреНрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╣рдореЗрд╢рд╛ рдЪрд░реНрдЪрд╛ рд╣реЛрдЧреАред
рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреНрдпрд╛ рд╣реИ
рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд▓рд╛рдн рдФрд░ рдЙрджреНрджреЗрд╢реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рдЗрдВрдЯ-рдХреНрд▓рд╛рд╕ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИред рд╣рд╛рд░реНрдбрдХреЛрдб рдХреЗ рдмрдЬрд╛рдп, рдЧреНрд░рд╛рд╣рдХ рд╡рд░реНрдЧ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдорд┐рд▓рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЧреНрд░рд╛рд╣рдХ рд╡рд░реНрдЧ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдЬрд╛рдирддрд╛ рд╣реИ, рдЬреЛ рдХрдордЬреЛрд░ рдмрдВрдзрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рдмрд╣реБрд░реВрдкрддрд╛ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, SweetCreator
рдкрд░ рдПрдХ рдирдЬрд╝рд░ SweetCreator
:
public abstract class SweetProducer { public abstract void produceSweet(); } public class CakeProducer extends SweetProducer { @Override public void produceSweet() { System.out.println("Cake produced"); } } public class ChocolateProducer extends SweetProducer { @Override public void produceSweet() { System.out.println("Chocolate produced"); } } public class CookieProducer extends SweetProducer { @Override public void produceSweet() { System.out.println("Cookie produced"); } } public class SweetCreator { private List<SweetProducer> sweetProducer; public SweetCreator(List<SweetProducer> sweetProducer) { this.sweetProducer = sweetProducer; } public void createSweets() { sweetProducer.forEach(sweet -> sweet.produceSweet()); } } public class SweetCreatorTest { public static void main(String... args) { SweetCreator sweetCreator = new SweetCreator(Arrays.asList( new CakeProducer(), new ChocolateProducer(), new CookieProducer())); sweetCreator.createSweets(); } }
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ SweetCreator
рд╡рд░реНрдЧ SweetCreator
рд╡рд░реНрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИред рд╡рд╣ рд╣рд░ Sweet
рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдпрд╣ рдкреГрдердХреНрдХрд░рдг рд╣рдореЗрдВ рдЕрдкрдиреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рдХреЛрдб рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдб рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрд╢рд╛ рдЗрд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рд▓рдЪреАрд▓рд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВред рдмрд╣реБрд░реВрдкрддрд╛ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддрд░реАрдХрд╛ рд╣реИред
@Override
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЙрд╕реА рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред
рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╕рдордп рд╕рд╣рд╕рдВрдпреЛрдЬрдХ рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░
рдпрджрд┐ рдЖрдк рдПрдХ рд╕рд╣рд╕рдВрдпреЛрдЬрдХ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ, рддреЛ рдЖрдк рдУрд╡рд░рд░рд╛рдЗрдб рд╡рд┐рдзрд┐ рдХрд╛ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╣рд╕рдВрдпреЛрдЬрдХ рдкреНрд░рдХрд╛рд░ рдореВрд▓ рд░реВрдк рд╕реЗ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХрд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
public abstract class JavaMascot { abstract JavaMascot getMascot(); } public class Duke extends JavaMascot { @Override Duke getMascot() { return new Duke(); } }
рдЪреВрдВрдХрд┐ Duke
JavaMascot
, рд╣рдо рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╕рдордп рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрд╛рд╡рд╛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕реЗрд╕ рдореЗрдВ рдмрд╣реБрд░реВрдкрддрд╛
рд╣рдо рдЖрдзрд╛рд░ рдЬрд╛рд╡рд╛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдПрдХ List
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рд╛рде рдПрдХ ArrayList
рд╡рд░реНрдЧ рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд░рдирд╛ рд╣реИред
List<String> list = new ArrayList<>();
рдПрдХ рдирдореВрдирд╛ рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдкреЙрд▓рд┐рдореЛрд░реНрдлрд┐рдЬреНрдо рдХреЗ рдмрд┐рдирд╛ рдЬрд╛рд╡рд╛ рдХрд▓реЗрдХреНрд╢рдВрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
public class ListActionWithoutPolymorphism {
рдШреГрдгрд┐рдд рдХреЛрдб, рд╕рд╣реА? рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдЙрд╕рдХрд╛ рд╕рд╛рде рджреЗрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ! рдЕрдм рдмрд╣реБрд░реВрдкрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
public static void main(String... polymorphism) { ListAction listAction = new ListAction(); listAction.executeListActions(); } public class ListAction { void executeListActions(List<Object> list) {
рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛ рд▓рд╛рдн рд▓рдЪреАрд▓рд╛рдкрди рдФрд░ рд╡реНрдпрд╛рдкрдХрддрд╛ рд╣реИред рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдПрдХ рд╡рд┐рдзрд┐ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдПрдХ List
рдкреНрд░рдХрд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИред
рдПрдХ рдкреЙрд▓реАрдореЙрд░реНрдлрд┐рдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛
рдЖрдк рдПрдХ рдкреЙрд▓реАрдореЙрд░реНрдлрд┐рдХ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рдХрд╛рд░рдг рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
public abstract class MetalGearCharacter { abstract void useWeapon(String weapon); } public class BigBoss extends MetalGearCharacter { @Override void useWeapon(String weapon) { System.out.println("Big Boss is using a " + weapon); } void giveOrderToTheArmy(String orderMessage) { System.out.println(orderMessage); } } public class SolidSnake extends MetalGearCharacter { void useWeapon(String weapon) { System.out.println("Solid Snake is using a " + weapon); } } public class UseSpecificMethod { public static void executeActionWith(MetalGearCharacter metalGearCharacter) { metalGearCharacter.useWeapon("SOCOM");
рд╣рдо рдпрд╣рд╛рдВ рдЬрд┐рд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдпрд╛ рд╣реЛрд╢рдкреВрд░реНрд╡рдХ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓ рд░рд╣реА рд╣реИред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдХреЗрд╡рд▓ рддрднреА рд╕рдВрднрд╡ рд╣реИ рдЬрдм рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХреА рдЬрд╛рдПред рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╛рджреГрд╢реНрдп рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рдХ рдХреЛ рдмрддрд╛рдирд╛ рд╣реЛрдЧрд╛: "рдЕрд░реЗ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред"
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реБрдП, рд╕рдВрдХрд▓рдХ рдХреЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХреЙрд▓ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рд╣реИ: рдЬреЛ рдХреНрд▓рд╛рд╕ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ SolidSnake
рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдВрдХрд▓рдХ рдХреЗ рдкрд╛рд╕ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ MetalGearCharacter
рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрд╡рд░реНрдЧ рдореЗрдВ рдПрдХ giveOrderToTheArmy
рд╡рд┐рдзрд┐ рд╣реИред
Instanceof рдХреАрд╡рд░реНрдб
рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрдж instanceof
рдиреЛрдЯ рдХрд░реЗрдВред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдкреВрдЫрд╛ рдХрд┐ рдХреНрдпрд╛ MetalGearCharacter
ред рдпрджрд┐ рдпрд╣ BigBoss
рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдкрд╡рд╛рдж рдорд┐рд▓реЗрдЧрд╛:
Exception in thread `main" java.lang.ClassCastException: com.javaworld.javachallengers.polymorphism.specificinvocation.SolidSnake cannot be cast to com.javaworld.javachallengers.polymorphism.specificinvocation.BigBoss
рдХреАрд╡рд░реНрдб super
рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╡рд░реНрдЧ рд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╛ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо super
рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
public class JavaMascot { void executeAction() { System.out.println("The Java Mascot is about to execute an action!"); } } public class Duke extends JavaMascot { @Override void executeAction() { super.executeAction(); System.out.println("Duke is going to punch!"); } public static void main(String... superReservedWord) { new Duke().executeAction(); } }
Duke
рд╡рд░реНрдЧ рдХреЗ executeAction
рд╡рд┐рдзрд┐ рдореЗрдВ рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрдж super
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓ рд╡рд░реНрдЧ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо Duke
рд╡рд░реНрдЧ рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рджреЛрдиреЛрдВ рд╕рдВрджреЗрд╢ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
The Java Mascot is about to execute an action! Duke is going to punch!
рдмрд╣реБрд░реВрдкрддрд╛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдВ
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдмрд╣реБрд░реВрдкрддрд╛ рдФрд░ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реАрдЦрд╛ред
рдЗрд╕ рдХрд╛рд░реНрдп рдореЗрдВ, рдЖрдкрдХреЛ рдореИрдЯ рдЧреНрд░реЛрдЗрдирд┐рдВрдЧ рдХреЗ рдж рд╕рд┐рдореНрдкрд╕рдВрд╕ рд╕реЗ рдХрдИ рддрд░реАрдХреЗ рджрд┐рдП рдЧрдП рд╣реИрдВ, рд╡реЗрд╡реНрд╕ рд╕реЗ рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ:
public class PolymorphismChallenge { static abstract class Simpson { void talk() { System.out.println("Simpson!"); } protected void prank(String prank) { System.out.println(prank); } } static class Bart extends Simpson { String prank; Bart(String prank) { this.prank = prank; } protected void talk() { System.out.println("Eat my shorts!"); } protected void prank() { super.prank(prank); System.out.println("Knock Homer down"); } } static class Lisa extends Simpson { void talk(String toMe) { System.out.println("I love Sax!"); } } public static void main(String... doYourBest) { new Lisa().talk("Sax :)"); Simpson simpson = new Bart("D'oh"); simpson.talk(); Lisa lisa = new Lisa(); lisa.talk(); ((Bart) simpson).prank(); } }
рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ? рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдИрдбреАрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ! рд▓рдХреНрд╖реНрдп рдЕрдкрдиреЗ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреМрд╢рд▓ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреЗ рд▓рд┐рдП рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдЕрдкрдирд╛ рдЙрддреНрддрд░ рдЪреБрдиреЗрдВ (рдЖрдк рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рд╣реА рдЙрддреНрддрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдП)
рдЖрдИ рд▓рд╡ рд╕реИрдХреНрд╕!
рдбреА 'рдУрд╣
рд╕рд┐рдореНрдкрд╕рди!
рдбреА 'рдУрд╣
рдмреА)
рд╕реИрдХреНрд╕ :)
рдореЗрд░реЗ рд╢реЙрд░реНрдЯреНрд╕ рдЦрд╛рдУ!
рдЖрдИ рд▓рд╡ рд╕реИрдХреНрд╕!
рдбреА 'рдУрд╣
рдиреАрдЪреЗ рджрд╕реНрддрдХ рд╣реЛрдорд░
рд╕реА)
рд╕реИрдХреНрд╕ :)
рдбреА 'рдУрд╣
рд╕рд┐рдореНрдкрд╕рди!
рдиреАрдЪреЗ рджрд╕реНрддрдХ рд╣реЛрдорд░
рдбреА)
рдЖрдИ рд▓рд╡ рд╕реИрдХреНрд╕!
рдореЗрд░реЗ рд╢реЙрд░реНрдЯреНрд╕ рдЦрд╛рдУ!
рд╕рд┐рдореНрдкрд╕рди!
рдбреА 'рдУрд╣
рдиреАрдЪреЗ рджрд╕реНрддрдХ рд╣реЛрдорд░
рдХреНрдпрд╛ рд╣реБрдЖ? рдмрд╣реБрд░реВрдкрддрд╛ рдХреЛ рд╕рдордЭрдирд╛
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП:
new Lisa().talk("Sax :)");
рдЖрдЙрдЯрдкреБрдЯ "рдореБрдЭреЗ рд╕реИрдХреНрд╕ рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИ!"ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ Lisa
рд╡рд░реНрдЧ рдореЗрдВ рдРрд╕реА рд╡рд┐рдзрд┐ рд╣реЛрддреА рд╣реИред
рдЕрдЧрд▓реЗ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП:
Simpson simpson = new Bart("D'oh"); simpson.talk();
рдЖрдЙрдЯрдкреБрдЯ "рдореЗрд░реЗ рд╢реЙрд░реНрдЯреНрд╕ рдЦрд╛рдУ!" рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо Bart
рд╕рд╛рде Simpson
рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВред
рдЕрдм рджреЗрдЦреЛ, рдпрд╣ рдереЛрдбрд╝рд╛ рдкреЗрдЪреАрджрд╛ рдорд╛рдорд▓рд╛ рд╣реИ:
Lisa lisa = new Lisa(); lisa.talk();
рдпрд╣рд╛рдВ рд╣рдо рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ рдЕрдзрд┐рднрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо talk
рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдкрд╛рд╕ рдирд╣реАрдВ talk
, рдЗрд╕рд▓рд┐рдП Simpson
рд╕реЗ talk
рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ Simpson
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдЙрдЯрдкреБрдЯ "рд╕рд┐рдореНрдкрд╕рди!" рд╣реЛрдЧрд╛ред
рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рдПрдХ рд╣реИ:
((Bart) simpson).prank();
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, new Bart("D'oh");
рдорд╛рдзреНрдпрдо рд╕реЗ Bart
рдХреНрд▓рд╛рд╕ рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд░рддреЗ рд╕рдордп рдкреНрд░реИрдВрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ new Bart("D'oh");
ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, super.prank()
рд╡рд┐рдзрд┐ рдХреЛ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ Bart
рдХреНрд▓рд╛рд╕ рд╕реЗ super.prank()
рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рд╖реНрдХрд░реНрд╖ рдпрд╣ рд╣реЛрдЧрд╛:
"D'oh" "Knock Homer down"
рд╕рд╛рдорд╛рдиреНрдп рдмрд╣реБрд░реВрдкрддрд╛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ
рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддреА рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреА рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдФрд░ рдЧрд▓рддреА рдЕрдирд┐рд╢реНрдЪрд┐рддрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдХрдХреНрд╖рд╛ рдХреЛ рдкреЙрд▓реАрдореЙрд░реНрдлрд┐рдХ рд░реВрдк рд╕реЗ рддрддреНрдХрд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╡рд┐рдзрд┐ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреА рд╡рд┐рдзрд┐ рд╣реИред
рдпрд╣ рднреА рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЕрдзрд┐рднрд╛рд░ рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрд▓рдЧ рд╣реИрдВ, рддреЛ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рд╣реИ, рддреЛ рдЖрдк рдУрд╡рд░рд░рд╛рдЗрдб рд╡рд┐рдзрд┐ рдХреЗ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдмрд╣реБрд░реВрдкрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП
рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХрд┐рд╕ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
@Override
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ; рдЕрдиреНрдпрдерд╛, рдПрдХ рд╕рдВрдХрд▓рдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреАред
рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдпрдорд┐рдд рдХрдХреНрд╖рд╛рдУрдВ, рдЕрдореВрд░реНрдд рд╡рд░реНрдЧреЛрдВ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдзрд┐рдХрд╛рдВрд╢ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╣реБрд░реВрдкрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ рдкреЙрд▓реАрдореЙрд░реНрдлрд╝рд┐рдХ рдЙрдкрд╡рд░реНрдЧ рдореЗрдВ рдЕрдкрдиреА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдЖрдк рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХреЛрдб рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рдпреЛрдЧред рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЖрдк рдЗрд╕ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдорд╛рд╕реНрдЯрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ!
рдЬрд╡рд╛рдм рд╣реИ
рдЙрддреНрддрд░ рд╣реИ рдбреАред
рдирд┐рд╖реНрдХрд░реНрд╖ рдпрд╣ рд╣реЛрдЧрд╛:
I love Sax! Eat my shorts! Simpson! D'oh Knock Homer down
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдореИрдВ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддрд╛ рд╣реВрдВред рдФрд░ рд╣рдо рдПрдХ рдЦреБрд▓реЗ рдкрд╛рда рдореЗрдВ рд╡рд┐рдЯрд╛рд▓реА рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред