рдирдорд╕реНрддреЗ! рдЖрдЗрдП рдЬрд╛рд╡рд╛ рдореЗрдВ рдЕрдореВрд░реНрдд рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВредрдЬрд╛рд╡рд╛ рдореЗрдВ рдЕрдореВрд░реНрдд рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг - 1

рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ "рд╕рд╛рд░" рдХреНрдпреЛрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдЖрдкрдХреЛ рд╢рд╛рдпрдж рдпрд╛рдж рд╣реЛрдЧрд╛ рдХрд┐ рдЕрдореВрд░реНрддрддрд╛ рдХреНрдпрд╛ рд╣реИ - рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЗрд╕рдХреА рдЪрд░реНрдЪрд╛ рдХреА рдереА :) рдпрджрд┐ рдЖрдк рднреВрд▓ рдЧрдП, рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВред рдпрд╛рдж рд░рдЦреЗрдВ, рдпрд╣ рдПрдХ рдУрдУрдкреА рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ, рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╕рдордп рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЗрдХрд╛рдИ рдХреЗ рдореБрдЦреНрдп рдЧреБрдгреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рджреНрд╡рд┐рддреАрдпрдХ рдЧреБрдгреЛрдВ рдХреЛ рддреНрдпрд╛рдЧрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдПрдХ SchoolTeacherрдХрдХреНрд╖рд╛ рдбрд┐рдЬрд╛рдЗрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдКрдВрдЪрд╛рдИ рд╢рд╛рдпрдж рд╢рд┐рдХреНрд╖рдХ рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реЛрдЧреАред рджрд░рдЕрд╕рд▓, рдПрдХ рд╢рд┐рдХреНрд╖рдХ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдПрдХ BasketballPlayerрд╡рд░реНрдЧ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдКрдВрдЪрд╛рдИ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛрдЧреАред рдЕрдЪреНрдЫрд╛, рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧрднрд╡рд┐рд╖реНрдп рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд╛рд░рдЧрд░реНрднрд┐рдд, "рд░рдл рд╡рд░реНрдХрдкреАрд╕" рд╣реИред рд╡рд░реНрдХрдкреАрд╕ рдХреЛ рд╕реАрдзреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ тАФ рдпрд╣ рдмрд╣реБрдд "рд░рдл" рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрд╡рд╕реНрдерд╛ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╡рд░реНрдЧ - рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХреЗ рд╡рдВрд╢рдЬ - рдХреЗ рдкрд╛рд╕ рд╣реЛрдВрдЧреЗред

рдЬрд╛рд╡рд╛ рдореЗрдВ рдЕрдореВрд░реНрдд рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг

рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
public abstract class Car {

   private String model;
   private String color;
   private int maxSpeed;

   public abstract void gas();

   public abstract void brake();

   public String getModel() {
       return model;
   }

   public void setModel(String model) {
       this.model = model;
   }

   public String getColor() {
       return color;
   }

   public void setColor(String color) {
       this.color = color;
   }

   public int getMaxSpeed() {
       return maxSpeed;
   }

   public void setMaxSpeed(int maxSpeed) {
       this.maxSpeed = maxSpeed;
   }
}
рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рд╛рд░ рд╡рд░реНрдЧ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ :) рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЙрд╕ рдЗрдХрд╛рдИ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд╛рд░ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдПрдХ рдХрд╛рд░ред рдЕрдореВрд░реНрдд рдХреАрд╡рд░реНрдб рдХрд╛ рдЕрд░реНрде рдпрд╣рд╛рдБ рдХреБрдЫ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ, "рд╕рд┐рд░реНрдл рдПрдХ рдХрд╛рд░" рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬрд╝ рдирд╣реАрдВ рд╣реИред рдЯреНрд░рдХ, рд░реЗрд╕ рдХрд╛рд░, рд╕реЗрдбрд╛рди, рдХреВрдк рдФрд░ рдПрд╕рдпреВрд╡реА рд╣реИрдВред рд╣рдорд╛рд░рд╛ рд╕рд╛рд░ рд╡рд░реНрдЧ рдХреЗрд╡рд▓ рдПрдХ "рдЦрд╛рдХрд╛" рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдмрд╛рдж рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
public class Sedan extends Car {

   @Override
   public void gas() {
       System.out.println("The sedan is accelerating!");
   }

   @Override
   public void brake() {
       System.out.println("The sedan is slowing down!");
   }

}
рдХрдИ рдорд╛рдпрдиреЛрдВ рдореЗрдВ, рдпрд╣ рдЙрд╕реА рдХреЗ рд╕рдорд╛рди рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдордиреЗ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдкрд░ рдкрд╛рдареЛрдВ рдореЗрдВ рдмрд╛рдд рдХреА рдереАред рдХреЗрд╡рд▓ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдРрд╕рд╛ Carрд╡рд░реНрдЧ рдерд╛ рдЬрд┐рд╕рдХреА рд╡рд┐рдзрд┐рдпрд╛рдБ рдЕрдореВрд░реНрдд рдирд╣реАрдВ рдереАрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдХрдИ рдиреБрдХрд╕рд╛рди рд╣реИрдВ рдЬреЛ рдЕрдореВрд░реНрдд рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рддрдп рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг, рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
public class Main {

   public static void main(String[] args) {

       Car car = new Car(); // Error! The Car class is abstract!
   }
}
рдЬрд╛рд╡рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдиреЗ рдЗрд╕ "рдлреАрдЪрд░" рдХреЛ рдЬрд╛рдирдмреВрдЭ рдХрд░ рдмрдирд╛рдпрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдпрд╛рдж рд░рдЦреЗрдВ: рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рднрд╡рд┐рд╖реНрдп рдХреЗ "рдирд┐рдпрдорд┐рдд" рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдЦрд╛рдХрд╛ рд╣реИ ред рдЖрдкрдХреЛ рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдХреА рдкреНрд░рддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛? рдЗрд╕реА рддрд░рд╣, рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ :) рдФрд░ рдпрджрд┐ Carрд╡рд░реНрдЧ рд╕рд╛рд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
public class Car {

   private String model;
   private String color;
   private int maxSpeed;

   public void go() {
       // ...some logic
   }

   public  void brake() {
       // ...some logic
   }
}


public class Main {

   public static void main(String[] args) {

       Car car = new Car(); // This is okay. The car is created.
   }
}
рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рдХреА рдХрд╛рд░ рд╣реИред рдпрд╣ рдЯреНрд░рдХ рдирд╣реАрдВ рд╣реИ, рд░реЗрд╕ рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕реЗрдбрд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИред рдпрд╣ "рд╕рд┐рд░реНрдл рдПрдХ рдХрд╛рд░" рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдЬрд╛рдирд╡рд░реЛрдВ рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ Animalрд╡рд╕реНрддреБрдПрдВ рдереАрдВ (" рд╕рд┐рд░реНрдл рдЬрд╛рдирд╡рд░ ")ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ, рдпрд╣ рдХрд┐рд╕ рдкрд░рд┐рд╡рд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдпрд╛ рдЗрд╕рдХреА рдХреНрдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реИрдВред рдХрд┐рд╕реА рдПрдХ рдХреЛ рдХрд┐рд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рджреЗрдЦрдирд╛ рдЕрдЬреАрдм рд╣реЛрдЧрд╛ред рдкреНрд░рдХреГрддрд┐ рдореЗрдВ "рд╕рд┐рд░реНрдл рдЬрд╛рдирд╡рд░" рдирд╣реАрдВ рд╣реИрдВред рдХреЗрд╡рд▓ рдХреБрддреНрддреЗ, рдмрд┐рд▓реНрд▓реА, рд▓реЛрдордбрд╝реА, рддрд┐рд▓ рдЖрджрд┐ рд╕рд╛рд░ рд╡рд░реНрдЧ рд╣рдореЗрдВ " рд╕рд┐рд░реНрдл рд╡рд╕реНрддреБрдУрдВ " рд╕реЗ рдмрдЪрд╛рддреЗ рд╣реИрдВред рд╡реЗ рд╣рдореЗрдВ рдЖрдзрд╛рд░рднреВрдд рд╕реНрдерд┐рддрд┐ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рдХрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рдореЙрдбрд▓ , рд░рдВрдЧ рдФрд░ рд╢реАрд░реНрд╖ рдЧрддрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЧреИрд╕ рдФрд░ рдмреНрд░реЗрдХ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ред рдЗрддрдирд╛ рд╣реАред рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рд░ рдЦрд╛рдХрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдмрд╛рдж рдореЗрдВ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред рдиреЛрдЯ: рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдореЗрдВ рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдБ рднреА рд╕рд╛рд░ рд╣реИрдВ , рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдХреЛрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИред рдХрд╛рд░рдг рд╡рд╣реА рд╣реИ: рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ "рдмрд╕ рдХрд╛рд░реЛрдВ" рдХреЗ рд▓рд┐рдП "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░" рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВред рд╡реЗ рдХреЗрд╡рд▓ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░ рдХреЛ рдХреНрдпрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдпрджрд┐ рдЖрдкрдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд╛рд╡рд╛ рдЗрд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
public abstract class Car {

   private String model;
   private String color;
   private int maxSpeed;

   public void gas() {
       System.out.println("Accelerating!");
   }

   public abstract void brake();

   // Getters and setters
}


public class Sedan extends Car {

   @Override
   public void brake() {
       System.out.println("The sedan is slowing down!");
   }

}

public class Main {

   public static void main(String[] args) {

       Sedan sedan = new Sedan();
       sedan.gas();
   }
}
рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ:
Accelerating!
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдордиреЗ рд╕рд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХреА, рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рдирд╣реАрдВред рдирддреАрдЬрддрди, рд╣рдорд╛рд░реА SedanрдХрдХреНрд╖рд╛ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдпрджрд┐ рд╣рдо рдЗрд╕рдХреА gas()рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдореВрд░реНрдд рдореВрд▓ рд╡рд░реНрдЧ рд╕реЗ "рдЦреАрдВрдЪрд╛" рдЬрд╛рддрд╛ рд╣реИ Car, рдФрд░ рд╣рдо рдХрдХреНрд╖рд╛ brake()рдореЗрдВ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред Sedanрдпрд╣ рдмреЗрд╣рдж рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд▓рдЪреАрд▓рд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдЕрдм рдЗрддрдиреА рд╕рд╛рд░рдЧрд░реНрднрд┐рдд рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛ ? рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдзреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ - рдФрд░ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ - рдПрдХ рд╡рд░реНрдЧ рдЕрдореВрд░реНрдд рд╣реИ рдпрджрд┐ рдЗрд╕рдХреА рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рднреА рд╕рд╛рд░ рд╣реИ. рджреЛ рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рдзрд┐, рдпрд╛ рдПрдХ рд╣рдЬрд╛рд░ рдореЗрдВ рд╕реЗ рдПрдХ - рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред рд╣рдо рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдИ рд╕рд╛рд░ рдирд╣реАрдВ рдЫреЛрдбрд╝рддреЗред рдирддреАрдЬрд╛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдореВрд░реНрдд рддрд░реАрдХреЛрдВ рдХреЗ рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рд╕рдВрднрд╡ рд╣реИ - рд╕рдВрдХрд▓рдХ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ - рд▓реЗрдХрд┐рди рдРрд╕рд╛ рди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╢рдмреНрдж рд╕рд╛рд░ рдХреЛ рдЗрд╕рдХреЗ рдЕрд░реНрде рд╕реЗ рд╡рдВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЗ рд╕рд╛рдереА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рднреА рдЗрд╕реЗ рджреЗрдЦрдХрд░ рдмрд╣реБрдд рд╣реИрд░рд╛рди рд╣реЛрдВрдЧреЗ: / рдХрд╣рд╛ рдХрд┐, рдпрджрд┐ рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХреЛ рд╕рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рд╡рдВрд╢ рд╡рд░реНрдЧ рдХреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рд╕рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛, рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреЗрдЧрд╛. рдмреЗрд╢рдХ, рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЗрд╡рд▓ рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд╛рд░ рдФрд░ рдирд┐рдпрдорд┐рдд рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╣рдо рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдпрд╛ рдПрдХ рдирд┐рдпрдорд┐рдд рд╡рд░реНрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ - рдХреЗрд╡рд▓ рдПрдХ рдореВрд▓ рд╡рд░реНрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рд╡рд░реНрдЧ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ

рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдХрд╣ рдЪреБрдХреЗ рд╣реИрдВ рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреЛрдИ рдорд▓реНрдЯреАрдкрд▓ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИред рдЖрдЗрдП рдЕрдм рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рд╡рд┐рд░рд╛рд╕рдд рд╣реЛрддреА рд╣реИ, рддреЛ рдмрд╛рд▓ рд╡рд░реНрдЧ рдпрд╣ рддрдп рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдХрд┐ рдХреМрди рд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЪреБрдирдирд╛ рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╡рд░реНрдЧ рд╣реИрдВ: ToasterрдФрд░ NuclearBomb:
public class Toaster {


 public void on() {

       System.out.println("The toaster is on. We're toasting!");
   }

   public void off() {

       System.out.println("The toaster is off!");
   }
}


public class NuclearBomb {

   public void on() {

       System.out.println("Boom!");
   }
}
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рджреЛрдиреЛрдВ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдПрдХ on()рд╡рд┐рдзрд┐ рд╣реИред рдЯреЛрд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдзрд┐ рдЯреЛрд╕реНрдЯ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рдорд╛рдгреБ рдмрдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╡рд┐рд╕реНрдлреЛрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЙрд╣-рдУрд╣: / рдЕрдм рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ (рдореБрдЭрд╕реЗ рдордд рдкреВрдЫрд┐рдП рдХреНрдпреЛрдВ!) рдмреАрдЪ рдореЗрдВ рдХреБрдЫ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣рд╛рдБ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рд╣реИ: MysteriousDevice! рдпрд╣ рдХреЛрдб рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╣рдо рдЗрд╕реЗ "рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рдерд╛" рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ:
public class MysteriousDevice extends Toster, NuclearBomb {

   public static void main(String[] args) {

       MysteriousDevice mysteriousDevice = new MysteriousDevice();
       mysteriousDevice.on(); // And what should happen here? Will we get toast or a nuclear apocalypse?
   }
}
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИред рд░рд╣рд╕реНрдпрдордп рдЙрдкрдХрд░рдг рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЯреЛрд╕реНрдЯрд░ рдФрд░ рдиреНрдпреВрдХреНрд▓рд┐рдпрд░рдмреЙрдореНрдм рджреЛрдиреЛрдВ рд╕реЗ рдирд┐рдХрд▓рд╛ рд╣реИред рджреЛрдиреЛрдВ рдХрд╛ рдПрдХ on()рддрд░реАрдХрд╛ рд╣реИред рдирддреАрдЬрддрди, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо on()рдХрд┐рд╕реА MysteriousDeviceрд╡рд╕реНрддреБ рдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХрд┐рд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╕рдордЭреЗрдЧреАред рдФрд░ рд╕рдмрд╕реЗ рдмрдврд╝рдХрд░, рдиреНрдпреВрдХреНрд▓рд┐рдпрд░рдмреЙрдореНрдм рдХреЗ рдкрд╛рд╕ рдХреЛрдИ off()рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╣рдо рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рддреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдЬрд╛рд╡рд╛ рдореЗрдВ рдЕрдореВрд░реНрдд рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг - 2рдпрд╣ "рдЧрд▓рддрдлрд╣рдореА", рдЬрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдареАрдХ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ рдПрдХрд╛рдзрд┐рдХ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЬрд╛рд╡рд╛ рдХрдХреНрд╖рд╛рдПрдВ рдХрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреА рд╣реИрдВред