20120808-课堂笔记 --继承、重载

1.继承的概念

2.继承的作用

  • 可以通过继承,将所有重复的内容放在一起。
  • 子类通过继承就可以获得超类的实例变量和方法。

3.继承语法

@interface 自定义类名  : NSObject

  • 在cocoa中,尽量从NSObject或已继承NSObject的类继承。
  • objective-c不支持多继承,但可通过其他特性,如分类和协议实现多继承的功能。
  • 继承的内容包括:方法和实例变量。 一般只在对继承的方法重载时,才在子类对它声明。
  • 继承之后不必再声明超类已有的实例变量,方法。
  • 继承常用于扩展一个类

  • 不能通过继承删除,减少方法,但可以利用重载来更改继承的定义。
  • 不能通过继承减少方法或实例变量,只能添加。
  • 分类机制允许以模块方式向现有的类定义添加新方法,尤其适用对没有源代码访问权限的类添加新定义时。
代码实例:
//定一个Shape类接口
@interface Shape : NSObject     //类名第一个字母要大写

{
   
    ShapeColor fillColor;
    ShapeRect  bounds;

}

-(void)setFillColor:(ShapeColor)fillColor;
-(void)setBounds:(ShapeRect)bounds;
-(void)draw;

@end//Shape

//定义一个Circlr类
@interface Circle : Shape      //继承了Shape类的方法和变量,不必再声明。

{
    
}

//可以把函数写在这,但是需要重载

@end//Circle

//定义一个Rectangle类
@interface Rectangle : Shape 

{
    
}

@end//Rectangle



4.类名,第一个字母要大写。

超类:所继承的类,又称父类。
子类:实施继承的类。
重写:改变方法的实现时,需要用到重写。

5.消息调度机制
  • 当代码发送消息时,objective-c 的方法调度程序将在当前类中搜索相应的方法。
  • 如果调度程序无法在接受消息的对象中找到相应的方法,它就在该对象的超类中进行查找。
6.
  • NSObject 声明了一个名为isa的实例变量,该变量保存一个指向对象的类的指针。
  • 每个方法都有一个名为self的隐藏参数,指向继承链中第一个类的第一个实例变量。
  • 编译器使用基地址加偏移 查找实例变量的位置,对象的基地址指向第一个实例变量的首个字节在内存中的位置。
  • isa对应类,self对应方法。
7.重写方法

  • 添加全新的方法。
  • 修改方法。
  • 方法调度程序将使用重写的方法,而忽略超类的方法。重写的方法 优先级大于超类的原方法
Q:提供某种重写方法时,若仍想调用超类的实现方法?
*---------------------------------------------------------------
解决方法: super 关键字
|1.可以通过super 实现显示的调用超类方法,如下:
[super setFillColor  :  c ];
|注意:此处不能写成 [Shape setFillColor : c]; 是实例方法,不是类方法。
|2.在子类中重写方法时,常显示的调用超类方法。
|3.向super发送消息时,objective-c 向该类的超类发送消息。如果超类中没有定义该消息,将按照通常的方式在继承中继续查找对应的消息。
*---------------------------------------------------------------

本课总结:

  1. 理解oop中继承的概念。
  2. 场我继承的语法规则。
  3. 理解objective-c的方法调度机制:无继承、有继承。
  4. 理解关键字super的作用。
  5. 掌握在重写方法中调用超类同名方法。







疑问。函数不一定要定义在类中。如果类外的函数要访问类的数据成员,可以使用程序方法来访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值