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

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

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

В этом руководстве мы узнаем о переопределении методов в Java с помощью примеров.

В предыдущем уроке мы узнали о наследовании. Наследование — это свойство ООП, которое позволяет нам получить новый класс (подкласс) из существующего класса (суперкласса). Подкласс наследует атрибуты и методы суперкласса.

Теперь, если один и тот же метод определен и в суперклассе, и в подклассе, то метод класса подкласса переопределяет метод суперкласса. Это называется переопределением метода.

<час>

Пример 1:переопределение метода

class Animal {
   public void displayInfo() {
      System.out.println("I am an animal.");
   }
}

class Dog extends Animal {
   @Override
   public void displayInfo() {
      System.out.println("I am a dog.");
   }
}

class Main {
   public static void main(String[] args) {
      Dog d1 = new Dog();
      d1.displayInfo();
   }
}

Вывод :

I am a dog.

В приведенной выше программе displayInfo() метод присутствует как в Animal суперкласс и Собака подкласс.

Когда мы вызываем displayInfo() используя d1 объект (объект подкласса), метод внутри подкласса Dog называется. displayInfo() метод подкласса переопределяет тот же метод суперкласса.

Обратите внимание на использование @Override аннотация в нашем примере. В Java аннотации — это метаданные, которые мы использовали для предоставления информации компилятору. Здесь @Override аннотация указывает компилятору, что метод после этой аннотации переопределяет метод суперкласса.

Не обязательно использовать @Override . Однако, когда мы используем это, метод должен следовать всем правилам переопределения. В противном случае компилятор выдаст ошибку.

<час>

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

<час>

ключевое слово super в переопределении Java

Распространенный вопрос, возникающий при переопределении в Java:

Можем ли мы получить доступ к методу суперкласса после переопределения?

Ну, ответ Да . Чтобы получить доступ к методу суперкласса из подкласса, мы используем super ключевое слово.

Пример 2. Использование ключевого слова super

class Animal {
   public void displayInfo() {
      System.out.println("I am an animal.");
   }
}

class Dog extends Animal {
   public void displayInfo() {
      super.displayInfo();
      System.out.println("I am a dog.");
   }
}

class Main {
   public static void main(String[] args) {
      Dog d1 = new Dog();
      d1.displayInfo();
   }
}

Вывод :

I am an animal.
I am a dog.

В приведенном выше примере подкласс Dog переопределяет метод displayInfo() надкласса Animal .

Когда мы вызываем метод displayInfo() используя d1 объект Собака подкласс, метод внутри Dog вызывается подкласс; метод внутри суперкласса не вызывается.

Внутри displayInfo() Собаки подкласс, мы использовали super.displayInfo() для вызова displayInfo() суперкласса.

<час>

Важно отметить, что конструкторы в Java не наследуются. Следовательно, в Java нет такой вещи, как переопределение конструктора.

Однако мы можем вызвать конструктор суперкласса из его подклассов. Для этого мы используем super() . Чтобы узнать больше, посетите суперключевое слово Java.

<час>

Спецификаторы доступа в переопределении метода

Один и тот же метод, объявленный в суперклассе и его подклассах, может иметь разные спецификаторы доступа. Однако есть ограничение.

Мы можем использовать только те спецификаторы доступа в подклассах, которые обеспечивают больший доступ, чем спецификатор доступа суперкласса. Например,

Предположим, метод myClass() в суперклассе объявлено protected . Затем тот же метод myClass() в подклассе может быть либо public или protected , но не private .

Пример 3:Спецификатор доступа в переопределении

class Animal {
   protected void displayInfo() {
      System.out.println("I am an animal.");
   }
}

class Dog extends Animal {
   public void displayInfo() {
      System.out.println("I am a dog.");
   }
}

class Main {
   public static void main(String[] args) {
      Dog d1 = new Dog();
      d1.displayInfo();
   }
}

Вывод :

I am a dog.

В приведенном выше примере подкласс Dog переопределяет метод displayInfo() надкласса Animal .

Всякий раз, когда мы вызываем displayInfo() используя d1 (объект подкласса), вызывается метод внутри подкласса.

Обратите внимание, что displayInfo() объявляется protected в разделе Животное суперкласс. Тот же метод имеет public спецификатор доступа в Dog подкласс. Это возможно, потому что public обеспечивает больший доступ, чем protected .

<час>

Переопределение абстрактных методов

В Java абстрактные классы создаются как суперклассы других классов. И если класс содержит абстрактный метод, его обязательно переопределить.

Мы узнаем больше об абстрактных классах и переопределении абстрактных методов в последующих руководствах.


java

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