A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 卧龙小 中级黑马   /  2014-9-22 18:47  /  1379 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

一 继承概述

父类自身也可能有父类,没有父类的类位于层次结构的最顶层,称为(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. }
复制代码




3 个回复

倒序浏览
写博客就是这样在这里发的吗,我新手啊,求指教
回复 使用道具 举报
Kevinneo 来自手机 中级黑马 2014-9-22 21:48:24
藤椅
songxing10000 发表于 2014-9-22 20:34
写博客就是这样在这里发的吗,我新手啊,求指教

不是发这里 这是是技术交流的  
回复 使用道具 举报
本帖最后由 卧龙小 于 2014-9-22 21:58 编辑
songxing10000 发表于 2014-9-22 20:34
写博客就是这样在这里发的吗,我新手啊,求指教

楼上正解,我把笔记发出来,高手可以提提错误,透明化学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马