Рубрики

Более ограниченный доступ к методу производного класса в Java

В Java ошибкой компилятора является предоставление более ограниченного доступа к функции производного класса, которая переопределяет функцию базового класса. Например, если в базовом классе есть функция public void foo () и если она переопределена в производном классе, то спецификатор доступа для foo () не может быть ничем иным, кроме public в производном классе. Если foo () является закрытой функцией в базовом классе, то спецификатор доступа для нее может быть любым в производном классе.

Рассмотрим следующие две программы. Программа 1 не скомпилируется, а программа 2 работает нормально.

Программа 1

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

class Base {

    public void foo() { System.out.println("Base"); }

}

  

class Derived extends Base {

  

    // ошибка компилятора

    private void foo() { System.out.println("Derived"); } 

}

  

public class Main {

    public static void main(String args[]) {

        Derived d = new Derived();

        d.foo();

    }

}

Программа 2

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

class Base {

    private void foo() { System.out.println("Base"); }

}

  

class Derived extends Base {

  

    // работает отлично

    public void foo() { System.out.println("Derived"); } 

}

  

public class Main {

    public static void main(String args[]) {

        Derived d = new Derived();

        d.foo();

    }

}

Выход:

Derived

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

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

Более ограниченный доступ к методу производного класса в Java

0.00 (0%) 0 votes