Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Java — переопределение

В предыдущей главе мы говорили о суперклассах и подклассах. Если класс наследует метод от своего суперкласса, то есть шанс переопределить метод при условии, что он не помечен как окончательный.

Преимущество переопределения:возможность определить поведение, специфичное для типа подкласса, что означает, что подкласс может реализовать метод родительского класса на основе его требований.

В объектно-ориентированных терминах переопределение означает переопределение функциональности существующего метода.

Пример

Давайте рассмотрим пример.

Живая демонстрация
class Animal {
   public void move() {
      System.out.println("Animals can move");
   }
}

class Dog extends Animal {
   public void move() {
      System.out.println("Dogs can walk and run");
   }
}

public class TestDog {

   public static void main(String args[]) {
      Animal a = new Animal();   // Animal reference and object
      Animal b = new Dog();   // Animal reference but Dog object

      a.move();   // runs the method in Animal class
      b.move();   // runs the method in Dog class
   }
}

Это даст следующий результат —

Вывод

Animals can move
Dogs can walk and run

В приведенном выше примере вы можете видеть, что хотя b является типом Animal, он запускает метод перемещения в классе Dog. Причина этого такова:во время компиляции выполняется проверка ссылочного типа. Однако во время выполнения JVM определяет тип объекта и запускает метод, принадлежащий этому конкретному объекту.

Следовательно, в приведенном выше примере программа будет скомпилирована правильно, поскольку в классе Animal есть метод move. Затем во время выполнения он запускает метод, специфичный для этого объекта.

Рассмотрим следующий пример —

Пример

Живая демонстрация
class Animal {
   public void move() {
      System.out.println("Animals can move");
   }
}

class Dog extends Animal {
   public void move() {
      System.out.println("Dogs can walk and run");
   }
   public void bark() {
      System.out.println("Dogs can bark");
   }
}

public class TestDog {

   public static void main(String args[]) {
      Animal a = new Animal();   // Animal reference and object
      Animal b = new Dog();   // Animal reference but Dog object

      a.move();   // runs the method in Animal class
      b.move();   // runs the method in Dog class
      b.bark();
   }
}

Это даст следующий результат —

Вывод

TestDog.java:26: error: cannot find symbol
      b.bark();
       ^
  symbol:   method bark()
  location: variable b of type Animal
1 error

Эта программа выдаст ошибку времени компиляции, так как ссылочный тип b Animal не имеет метода с именем bark.

Правила переопределения метода

Использование ключевого слова super

При вызове версии суперкласса переопределенного метода super используется ключевое слово.

Пример

Живая демонстрация
class Animal {
   public void move() {
      System.out.println("Animals can move");
   }
}

class Dog extends Animal {
   public void move() {
      super.move();   // invokes the super class method
      System.out.println("Dogs can walk and run");
   }
}

public class TestDog {

   public static void main(String args[]) {
      Animal b = new Dog();   // Animal reference but Dog object
      b.move();   // runs the method in Dog class
   }
}

Это даст следующий результат —

Вывод

Animals can move
Dogs can walk and run

java

  1. Операторы Java
  2. Java-интерфейс
  3. Метод String Length() в Java:как найти на примере
  4. Метод Java String indexOf() с подстрокой и примерами
  5. Метод Java String charAt() с примером
  6. Метод Java String compareTo():​​как использовать с примерами
  7. Строка Java содержит () Метод | Проверить подстроку с примером
  8. Метод Java String endWith() с примером
  9. Java String replace(), replaceAll() и replaceFirst()
  10. Статическая переменная в Java:что такое статический блок и метод [пример]