Java: Как получить доступ к реализации метода класса Sub из класса Super - PullRequest
0 голосов
/ 12 марта 2019

Мне нужно было понять это, теперь, когда я понял это, я подумал, что должен это выпустить, может кому-то помочь:

Как получить доступ к реализации метода, предоставляемого подклассом внутри суперкласса?

Рассмотрим ситуацию, когда вы реализуете метод в классе, который в конечном итоге будет расширен другими классами. Вашему классу нужна информация, которая будет доступна только после того, как подкласс предоставит ее во время выполнения. Как вы используете метод, который будет доступен во время выполнения?

1 Ответ

0 голосов
/ 12 марта 2019

Рассмотрим следующее:

public interface Animal {

    bool isVertebrate();
    bool isDomesticable();  
}

и абстрактный класс, реализующий этот интерфейс:

abstract class Cat implements Animal {

public bool isVertebrate() {return true;}

public void dealWithCat(){
if (isDomesticable()){
 ...
   }
}

Но реализация для isDomesticable делегирована подклассу:

public class Tiger extends Cat {

public bool isDomesticable(){
return false;
}

Поскольку Cat является abstract, его нельзя создать.Это бесплатно предоставить реализацию для некоторых методов интерфейса, но не обязательно предоставлять ее для каждого метода.Методы, для которых он не обеспечивает реализацию, должны быть предоставлены подклассом.И во время выполнения методы в суперклассе получают реализацию из подкласса.Таким образом, в нашем примере реализация isDomesticable() не предоставляется Cat, но позже она реализуется Tiger.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...