Objective-C基础知识之(三):继承、#import、@class:
来源:互联网 发布:禁毒知识网络竞答试题 编辑:程序博客网 时间:2024/05/24 20:07
一、继承:
1、用法:
把相同的特征和行为定义在父类中,子类只定义特有的特征和行为。
2、继承的特点:
(1)父类、子类是相对的概念。如:人->学生->大学生中,学生即是人的子类,也是大学生的父类。
(2)继承是单向的,OC中只允许单继承。
(3)继承具有传递性。
(4)子类从父类继承了所有的实例变量和方法。私有的实例变量和方法只能继承,不能使用。
(5)没有父类的类称为根类,正常情况下,OC中只有一个根类NSObject(祖宗类)
3、继承的优势:将多个类中重复的实例变量和方法写在父类中,子类只定义独有的实例变量和方法,即保证类的完整,又能简化代码。
4、子类继承注意问题
子类可以继承父类中所有的实例变量,但是:可见度为私有的实例变量,不能在子类中使用。
子类可以继承父类中所有的方法,但是,“私有方法”无法调用,因为没有在接口部分声明,在类的外部无法识别。
当子类继承父类时,子类可以不重新声明继承的方法,不能重新声明继承的实例变量。
当子类调用从父类继承的方法时,不是在调用父类的方法,子类调用的是自己的方法,本质:子类从父类继承了相同的方法实现。
子类如果只想继承方法,不想使用父类提供的实现方法,在子类中重新实现方法,被称为:重写。
5、继承建立的两种方式
(1)建立文件时设置继承的层级
(2)文件建立后,如果需要建立继承关系,则在需要继承的文件中导入需要继承父类的头文件。
6、继承中方法的执行
继承具有传递性,在子类中执行父类的方法的顺序为:查找本类中是否有实现(重写)的方法;
如果没有,查找父类中是否有实现(重写)的方法;
如果没有,查找父类的父类中是否有实现(重写)的方法;
逐级向上查找,找到即执行。
如果没有找到方法,系统则会崩溃。
二、#import、@class:
1、#import
#import作用:导入文件的内容。
在哪儿调用,文件的内容就被导入在哪个位置。
在两个类的.h文件中,相互导入对方的.h文件时,会造成循环导入现象。
造成循环导入后,编译器无法编译到“类的接口部分”这段代码。导入不成功,无法使用,因为类的接口部分对外声明了:类名、实例变量、方法。
2、要解决上述的问题,使用@class:类名
语法:@class :类名 ;
作用:告诉编译器,@class后面的字符串是个类名,作为类名使用。没有导入头文件。有效避免循环导入头文件。
位置:在类的.h文件中,在@interface前。
使用了@class:类名后,就可以在声明中使用“类名”类型声明实例变量。
在类的实现部分需要导入头文件:
在类的接口部分使用@class类名,通常只是使用类的名字作为类使用。
在类的实现部分,要使用对象声明的实例变量和方法,方法是声明在接口部分(.h文件中),故需要导入类的头文件。
- Objective-C基础知识之(三):继承、#import、@class:
- Objective-C基础之@class与#import
- Objective-C----@class 和 #import
- Objective-c中@class和#import
- Objective-c——@class关键字&#import
- Objective-c——@class关键字&#import
- Objective-c中@class和#import
- objective-c中@class和#import
- Objective-C @class与#import的区别
- Object-c学习之路三(@class与#import的区别)
- objective-c之继承
- Object-C学习(三):#import与@class的区别
- Objective-C基础知识之(五):NSString
- Objective-C 基础知识之(八):NSSet
- Objective-C 基础知识之(十一):Block
- Objective-C 基础知识之(十二):NSDate
- Objective-C 基础知识之 (十五):KVC
- IOS笔记(二)——Objective-C面向对象中的"@class和#import"
- 微信开发大坑汇总之微信语音篇
- 去除<!--[if gte mso 9]......<![endif]-->字符串
- 2015华为记票统计
- VC++6.0单步调试
- z字形扫描
- Objective-C基础知识之(三):继承、#import、@class:
- Android中设置TextView的颜色setTextColor
- LINUX学习之-centos7营救模式
- 51nod 1103:N的倍数 抽屉原理
- Oracle 分页存储过程
- PHP学习可以利用的有效资源,扩展
- python安装第三方库的命令
- JNI的某些数组和字符串类型转换(转)
- 非const变量默认是extern