Задать вопрос
Ответы пользователя по тегу ООП
  • Каким видом полиморфизма является этот код?

    yakovmanshin
    @yakovmanshin
    Software Engineer
    Пример на сайте не очень наглядный, но ошибок в нем нет и полиморфизм он вполне иллюстрирует (в переопределении метода method2).

    Декларацию переменной действительно можно заменить на метод, который принимает экземпляр A и всех его дочерних классов: для наглядности так будет лучше, но в остальном отличий мало. (Мой код на TypeScript, но его смысл понятен, думаю.)
    class A {
        someMethod(): string {
            return "A";
        }
    }
    
    class B extends A {
        someMethod(): string {
            return "B";
        }
    }
    
    function callSomeMethod(object: A) {
        console.log(object.someMethod());
    }
    
    callSomeMethod(new A()); // "A"
    callSomeMethod(new B()); // "B"


    Можно обойтись и без функции, если явно указать тип переменной (и если PHP так позволяет):
    const objectWithSomeMethod: A = new B();
    Ответ написан
    Комментировать