2015-08-14 2 views
0

Я новичок в объективе c, и я сделал большой шаг от разработки веб-страниц (php) до разработки ios.

Почему я должен переопределять и реализовывать методы из суперкласса?
Не эти методы уже существуют в их суперклассе?

Например, у меня есть контроллер табличного представления. Почему isnt свойство вроде: числа строк, вместо того, чтобы внедрять метод?
И почему мы не реализуем все методы, существующие в суперклассе?


Я предполагаю, что у меня есть недостаток знаний во всей системе наследования с соблюдением c.Почему нам нужно переопределять методы - объективный c?

Благодаря

+9

Концепция переопределяющих методов не является специфичной для Objective-C. Все языки программирования OO поддерживают эту функцию. – rmaddy

+0

Все языки ООП на классной основе. В языках, основанных на прототипах, копирование и замена - это концепция. –

ответ

0

Метод переопределения в объектно-ориентированном программировании является языковой функцией, которая позволяет подклассу или дочернему классу предоставлять конкретную реализацию метода, который уже предоставляется одним из его суперклассов или родительских классов. Реализация в подклассе переопределяет (заменяет) реализацию в суперклассе, предоставляя метод, который имеет одинаковое имя, те же параметры или подпись, и тот же тип возврата, что и метод в родительском классе. Версия метода, который выполняется, будет определяться объектом, который используется для его вызова. Если для вызова метода используется объект родительского класса, будет выполнена версия родительского класса, но если для вызова метода используется объект подкласса, то будет выполнена версия в дочернем классе. Это очень мощный аспект объектно-ориентированного программирования. Exemple: C подкласса B и B подкласс

Все они имеют один и тот же Methode печать Если у Вас есть Массивы с одним именем экземпляра обр Для ввода в обр { Print (I) } Хорошая Methode print 'будет вызов для каждого объекта

0

Вы говорите о переопределение методов, но пример, который вы дали с Tableview не Переопределение методов. TableView использует шаблон делегата. В шаблоне делегата существует протокол, который определен. Давайте используем UITableView в качестве примера:

Протокол, который определяется как UITableviewDataSource. Это в основном объявление о том, что такие методы, как numberOfRowsInSection, должны существовать в зависимости от того, какой класс соответствует этому протоколу.

Когда вы сообщите tableView, что вы соответствуете его протоколу UITableViewDataSource, указав tableview.dataSource = self, вы сообщаете ему, что вы реализуете методы, перечисленные в объявлении UITableviewDataSource.

Этот шаблон создает api для использования tableView без знания класса, предоставляющего его. По сути, tableview будет запрашивать ваш класс для информации через UITableviewDataSource api, который был определен.

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

+0

Спасибо, что такое api? И что, если я не хочу использовать протокол savce для представления данных таблицы, должен ли я реализовать эти методы тоже? – user3764456

+0

На эти вопросы можно ответить простым поиском Google. – JAL

Смежные вопросы