Полиморфизм в серии Java Collection, как это работает? [Дубликат]

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

  некоторая команда |  xargs  
2
задан John Smith 30 March 2014 в 22:52
поделиться

4 ответа

Правильно, вы не можете видеть это, потому что s - это тип SuperClass, который не имеет этого метода - это, очевидно, нарушит принцип Полиморфизм .

Поэтому вам нужно либо изменить код, как ((ChildClass) s).childClassMethod();, либо сделать s как ChildClass.

5
ответ дан Petr Mensik 16 August 2018 в 10:06
поделиться

Это потому, что суперкласс не имеет этого метода.

Если вы хотите, чтобы суперкласс мог вызвать метод, вам нужно сделать его абстрактным и дать ему этот метод.

Подкласс является формой суперкласса, суперкласс не является формой подкласса.

2
ответ дан Gabs00 16 August 2018 в 10:06
поделиться
  • 1
    я вижу так, если я создам пустой метод в суперклассе, он будет работать? – John Smith 30 March 2014 в 22:56
  • 2
    @ user1840040 да, но вам нужно сделать абстракцию суперкласса, вы также можете сделать метод в суперклассе, а затем переопределить его в подклассе – Gabs00 30 March 2014 в 22:56
  • 3
    это сработало, я знаю твой трюк сейчас – John Smith 30 March 2014 в 23:17

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

См.

2
ответ дан Jigar Joshi 16 August 2018 в 10:06
поделиться

Родитель ничего не знает о каких-либо новых методах, которыми обладает ребенок.

public class SuperClass {
    // I have no method named "childClassMethod"...
}

public class ChildClass {
    public void childClassMethod() {
        // Do something.
    }
}

SuperClass не знает о childClassMethod(). Вам нужно будет предоставить оба класса с интерфейсом или добавить этот метод к родительскому элементу и переопределить его в дочернем элементе.

Или вы могли бы просто передать объект в дочерний класс, как предложили другие, но это может быть небезопасным.

((ChildClass) s).childClassMethod()
2
ответ дан Mr. Polywhirl 16 August 2018 в 10:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: