Added: 5 months ago
From: ytkach
Views: 3,772
Sort by time | Sort by thread (beta)

Link to this comment:

Share to:

All Comments (18)

Sign In or Sign Up now to post a comment!
  • не пойму, как в суперклассе можно вызывать методы подклассов, если суперкласс по-определению ничего не знает о своих наследниках и есть ли они вообще у него?

  • @TheLexass Сформулируйте свой вопрос. Поток получает от суперкласса поведение (все методы). Если Вам нужно, чтобы поток как-то по своему выполнял метод то, делается переопределение нужного метода.

    Shape shape = new Triangle();

    shape.draw()

    есть такое правило, переменная суперкласса, может ссылаться как на объект суперкласса, так и на его потомков. Это называется неявное восходящее преобразование. Но в общем, это полиморфизм, т.к. метод draw() будет выполняться для каждого потомка по своему.

  • @TheLexass shape это не объект, это только ссылка на него.

    Shape[] shape = new Shape[3];

    shape[0] = new Circle();

    shape[1] = new Square();

    shape[2] = new Rectangle();

    у каждого потомка переопределён метод draw().

    for(int i = 0; i < shape.length; i++) { shape[i].draw();

    }

    во время компиляции (на лету) происходит позднее связывание. По типу объекта в массиве, компилятор знает для какого метода нужно вызвать метод draw();

  • модификатор package? Отсутствие модификатора означает доступ в пределах пакета. :)

    package - это создание пакета. :) Добавили бы информационные субтитры. :)

  • Инкапсуляция. Существуют разработчики класса и программисты-клиенты. Одни создают класс, другие ими пользуются. Первые должны максимально скрыть реализацию класса и оставить для программистов-клиентов только интерфейс (методы).

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

  • Полиморфизм - это работа с неизвестными классами при условии, что они были унаследованы от известного базового класса.

    Вы как разработчик собственного класса не должны знать сколько раз и какие классы унаследовали Ваш класс. Вы знаете только то, что в Вашем базовом классе есть методы, которые используются в потомках, но каждый потомок, если в нём был переопределён этот метод, будет выполнять действие по указанным условиям.

  • Полиморфизм. Я создал класс Employee в котором создал метод fire и отдал класс коллегам. Они унаследовали мой класс и, один создал класс Manager, другой создал класс Cleaner. Каждый переопределил метод fire - увольнение с разными условиями. Директор приказал уволить всех рабочих. Я обращаюсь к базовому классу Employee и даю действие fire уволить всех. Менеджеры получают при увольнении 1000 баксов (переопределённый метод), а уборщики билет в Магадан (переопределённый метод).

  • Полиморфизм. Я создаю класс ChessMan, создаю метод move(). Отдаю свой класс коллегам. Каждый программист наследует мой класс и создаёт свою фигуру. Один пишет класс Queen, другой Knight и т.д. каждая фигура переопределяет мой метод move() по своему, т.к. каждая фигура в шахматах имеет уникальный ход.

    Я не должен знать сколько раз наследовали мой класс, какие существуют фигуры, как они умеют ходить. Я даю общую команду move() и каждая фигура, которая наследовала мой класс ходит по своему.

  • 30:00-37:30 Автора унесло... вынос мозга.

  • @19:00-19:30 Ничего не понял. Что дублируем и кому обращаемся? Может быть автор имел ввиду, что нужно использовать композицию (has -содержит)? Т.е. механизм создания нового класса из объектов существующих классов?

    Без сарказма, я хочу лишь понять и исправить, если это необходимо. :)

  • Дошёл до @14:00 мин. прокомментирую. Автомобиль рассматривать для наследование в качестве примера - очень плохо для новичков. Автомобиль лучше рассматривать для композиции. Самый яркий пример наследования это Triangle extends Shape. Из конкретного класса в более абстрактный. Ещё, Cat extends Mammals, Mammals extends Animal, Animal extends Being.

    Инкапсуляция - это основной принцип ООП. Которая позволяет защитить данные объекта, скрыть их от клиента программиста, оставив только интерфейс класса.

  • Поведение объекта - какими методами обладает объект, какие методы можно применить к объекту. Состояние - как реагирует объект на применение методов.

  • він перепутав package з модифікатором доступу default'ом.. нічо буває)

  • Под конец диктор запутался)

  • Про static нормально обьяснил! Молодец)))

  • Молодцы!Спосибо за уроки!

  • Отличные уроки !

  • годные уроки

Loading...
Alert icon
0 / 00Unsaved Playlist Return to active list
    1. Your queue is empty. Add videos to your queue using this button:
      or sign in to load a different list.
    Loading...Loading...Saving...
    • Clear all videos from this list
    • Learn more