黑马程序员技术交流社区

标题: OC学习笔记9-继承1 [打印本页]

作者: 卧龙小    时间: 2014-9-22 18:47
标题: OC学习笔记9-继承1

继承是面向对象的一个重要的原理

一 继承概述

父类自身也可能有父类,没有父类的类位于层次结构的最顶层,称为(root)根类。OC中可以自己定义根类,当通常不这样做,我们所定义的类都是NSObject 根类的派生类,接口文件中通常这一定义

@interface Fraction:NSObject

...

@end

类  Fraction 是从NSObject 派生的,称为NSObject 的子类。NSObject 是 fraction 的父类

继承的概念作用于整个继承链,子类继承父类的所有方法和实例变量,类的每个实例都拥有自己的实例变量,即使这些变量都是继承下来的。



二@class指令

如果不需要引入和处理整个class.h 类,只需要知道是个类名,使用@class 指令可以提高效率.如果需要引用类的方法,@class 指令是不够的,因为编译器需要更多的消息,

例子:

@class   XYPoint;

@interface Rectangle:NSObject

-(XYPoint *) origin;

@end


可以看出@class 的作用是当编辑器遇到这样的语句

-(XYPoint *) origin;

时,可以告诉编辑器  XYPoint  是一个类的名字,origin 是 XYPoint 类的一个对象



三 重写方法

通过重写方法,可以修改继承方法的定义

例子:

  1. @interface  A:NSObject
  2. -(void) print;
  3. @end

  4. @implementation A
  5. -(void) print
  6. {
  7. NSLog(@"%s","A");//输出A;
  8. }
  9. @end

  10. @implementation B:A
  11. -(void) print
  12. {
  13. NSLog(@"%s","B");//输出B;
  14. }

  15. @end

  16. int main(int argc,const char * argv[])
  17. {
  18. @autoreleasepool{
  19. A *a =[[A alloc] int];
  20. B *b =[[B alloc] int];
  21. [a print];//打印A
  22. [b print];//打印B - 子类覆盖后的方法
  23. }
  24. }
复制代码





作者: songxing10000    时间: 2014-9-22 20:34
写博客就是这样在这里发的吗,我新手啊,求指教
作者: Kevinneo    时间: 2014-9-22 21:48
songxing10000 发表于 2014-9-22 20:34
写博客就是这样在这里发的吗,我新手啊,求指教

不是发这里 这是是技术交流的  
作者: 卧龙小    时间: 2014-9-22 21:55
本帖最后由 卧龙小 于 2014-9-22 21:58 编辑
songxing10000 发表于 2014-9-22 20:34
写博客就是这样在这里发的吗,我新手啊,求指教

楼上正解,我把笔记发出来,高手可以提提错误,透明化学习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2