Рубрики

Приватные и финальные методы в Java

Когда мы используем финальный спецификатор с методом, метод не может быть переопределен ни в одном из наследующих классов. Методы сделаны окончательными по причинам дизайна.
Поскольку закрытые методы недоступны, они неявно являются окончательными в Java. Таким образом, добавление окончательного спецификатора в приватный метод не добавляет никакой ценности. На самом деле это может вызвать ненужную путаницу.

class Base {

  

   private final void foo() {}

  

   // Вышеуказанный метод foo () такой же, как и следующий. Ключевое слово

   // final является избыточным в вышеуказанном объявлении.

  

   // private void foo () {}

}

Например, и «программа 1», и «программа 2» ниже приводят к одной и той же ошибке компилятора «foo () имеет частный доступ в Base».

Программа 1

// имя файла: Main.java

class Base {

    private final void foo() {}

}

   

class Derived extends Base {

    public void foo() {} 

}

   

public class Main {

    public static void main(String args[]) {

        Base b = new Derived();

        b.foo();

    }

}

Программа 2

// имя файла: Main.java

class Base {

    private void foo() {}

}

   

class Derived extends Base {

    public void foo() {} 

}

   

public class Main {

    public static void main(String args[]) {

        Base b = new Derived();

        b.foo();

    }

}

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Приватные и финальные методы в Java

0.00 (0%) 0 votes