I'm new to Objective-C and I did a big step from web developing (php) to ios developing.
Why should I override and implement methods from the superclass?
Don't these methods already exist in their superclass?
For example, I have a table view controller. Why isn't a property like: numbers of rows, Instead of implementing a method?
And why don't we implement all the methods that exist in the superclass?
I guess I have a lack of knowledge in all of the inheritance system in Objective-C.
答案 0 :(得分:0)
您正在讨论重写方法,但您使用tableView提供的示例并未覆盖这些方法。 tableView使用委托模式。在委托模式中,有一个定义的协议。我们以UITableView为例:
定义的协议是UITableviewDataSource。这基本上是一个声明,即numberOfRowsInSection等方法应该存在于符合此协议的任何类中。
当你通过说tableview.dataSource = self告诉tableView你遵守它的UITableViewDataSource协议时,你告诉它你实现了UITableviewDataSource声明中列出的方法。
这种模式为tableView创建了一个api,而不需要知道提供它的类。从本质上讲,tableview将通过已定义的UITableviewDataSource api向您的班级提供信息。
您可以搜索委托模式,以找出实现它的优缺点。
答案 1 :(得分:0)
在面向对象编程中,方法重写是一种语言功能,它允许子类或子类提供已由其某个超类或父类提供的方法的特定实现。子类中的实现通过提供与父类中的方法具有相同名称,相同参数或签名以及相同返回类型的方法来覆盖(替换)超类中的实现。执行的方法版本将由用于调用它的对象确定。如果父类的对象用于调用该方法,则将执行父类中的版本,但如果使用子类的对象来调用该方法,则将执行子类中的版本。 这是面向对象编程的一个非常强大的方面。 例: C子类B和B子类A
他们都有相同的方法打印 如果你有一个实例名称为arr的数组 对于我在arr { 打印(i) } 好的方法打印将会调用每个对象