1. рд╕рд╛рдорд╛рдиреНрдп рдЖрдзрд╛рд░ рд╡рд░реНрдЧ

рдЖрдЬ рд╣рдо рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рдПрдХ рд╕реНрдореЛрд░реНрдЧрд╛рд╕реНрдмреЛрд░реНрдб рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВрдЧреЗред рдпрд╛рдж рд░рдЦреЗрдВ рдЬрдм рд╣рдордиреЗ ChessItemрд╢рддрд░рдВрдЬ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдереА? рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ ЁЯЩВ

рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдПрдХ draw()рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рддреА рд╣реИред рдЖрдк draw()рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЯреБрдХрдбрд╝рд╛ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд░ рдЦреБрдж рдХреЛ рдЦреАрдВрдЪрддрд╛ рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред

рдпрджрд┐ draw()рд╡рд┐рдзрд┐ ChessItem рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдереА, рддреЛ рд╣рдо рдЗрд╕реЗ рдкреАрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрд▓рд┐рдЧреЗрдВрдЯ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

class ChessBoard
{
   public void drawAllChessItems()
   {
      // Add the pieces to the list
      ArrayList<ChessItem> items = new ArrayList<ChessItem>();
      items.add(new King());
      items.add(new Queen());
      items.add(new Bishop());

      // Draw them regardless of their type
      for(ChessItem item: items)
      {
         item.draw();
      }
   }
}

рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рдХреЗ ChessItem, рд╣рдо рдХреЛрдб рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ: рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдо рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд┐ред

рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╡рд╛рд▓ рд╣реИ: рдХрдХреНрд╖рд╛ draw()рдореЗрдВ рд╕реАрдзреЗ рдШреЛрд╖рд┐рдд рд╡рд┐рдзрд┐ рдХреЛ ChessItemрд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдЖрдЦрд┐рд░рдХрд╛рд░, рд╢рддрд░рдВрдЬ рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рдореЛрд╣рд░рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛, рдЗрд╕рд▓рд┐рдП рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

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


2. рд╕рд╛рд░ рд╡рд░реНрдЧ

рд╕рд╛рд░ рдХрдХреНрд╖рд╛рдПрдВ

рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд░реНрдЧ рд╣реИ: рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ ред рд╡реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдФрд░ рдЙрдирдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВред

рдЕрдореВрд░реНрдд рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рддреАрди рдмрд╛рддреЗрдВ рд╣реИрдВред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд┐рдирд╛ рд╡рд┐рдзрд┐

рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╡рд┐рдзрд┐ рдХреЛ рдЕрдореВрд░реНрдд рдмрдирд╛рддрд╛ рд╣реИред рд╡рд┐рдзрд┐ рдирд┐рдХрд╛рдп рдХреЛ рдХреЗрд╡рд▓ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдореЗрдердб рдХреЗ рдирд╛рдо рд╕реЗ рдкрд╣рд▓реЗ рд╣рдо abstractрдХреАрд╡рд░реНрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг:

public abstract class ChessItem
{
   public int x, y; // Coordinates
   private int value; // The piece's value
   public int getValue() // Ordinary method that returns value field
   {
      return value;
   }

   public abstract void draw(); // Abstract method. The implementation is missing.
}

рд╕рд╛рд░ рд╡рд░реНрдЧ

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХреЛ рд╕рд╛рд░ рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рд╕рд╛рд░ рд╡рд┐рдзрд┐ рднреА рд╣реИ, рддреЛ рдХрдХреНрд╖рд╛ рдХреЛ рднреА abstractрдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рд░реЛрдХ рд▓рдЧрд╛рдирд╛

рдЖрдк рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ ред рдРрд╕рд╛ рдХреЛрдб рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдХреЛрдб рд╡рд┐рд╡рд░рдг
ChessItem item = new ChessItem();
item.draw();
рдпрд╣ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ :
ChessItem item = new Queen();
item.draw();
рд▓реЗрдХрд┐рди рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛

рдпрджрд┐ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХреЛ рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕рднреА рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдЖрдкрдХреЛ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХреЛ рднреА рд╕рд╛рд░ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХреА рдЧрдИ рд╡рд┐рдзрд┐ рдХреЛ рд╕реАрдзреЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдореВрд▓ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ рд╡рд░реНрдЧ рдХреЛ рд╕рд╛рд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдФрд░ рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рдЬрд░реВрд░реА рд╣реИ? рдЕрдореВрд░реНрдд рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдХреНрдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕рд╛рдорд╛рдиреНрдп рд▓реЛрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ? рдФрд░ рд╕рд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрдЬрд╛рдп, рдХреНрдпрд╛ рд╣рдо рд╡рд┐рдзрд┐ рдирд┐рдХрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдЦрд╛рд▓реА рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реИрдХреЗрдЯ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рдереЗ?

рд╣рдоред рд▓реЗрдХрд┐рди рдпреЗ рдкреНрд░рддрд┐рдмрдВрдз privateрд╕рдВрд╢реЛрдзрдХ рдХреЗ рд╕рдорд╛рди рд╣реИрдВред рд╣рдо рдирд┐рдЬреА рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╕реАрдзреЗ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рдХрдХреНрд╖рд╛рдПрдВ рд▓рд┐рдЦрддреЗ рд╕рдордп рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдореВрд░реНрдд рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реИред рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХрд╛ рд▓реЗрдЦрдХ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд▓реЗрдЦрдХ рдХреЛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдореВрд░реНрдд рддрд░реАрдХреЛрдВ рдХреЛ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реЛрдЧрд╛ рдФрд░ рдлрд┐рд░ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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