OC语言自学《九》---- OC(面向对象)
发布日期:2025-04-27 12:26:32
浏览次数:22
分类:精选文章
本文共 1368 字,大约阅读时间需要 4 分钟。
定义类和创建对象
在Objective-C中,类是程序结构的基本单元,使用class关键字创建类,并且使类继承NSObject。@interface负责声明类的属性和方法签名,@implementation负责实现类的具体功能。
函数和方法的区别
方法:
- 必须以减号或加号开头。
- 减号开头的是对象方法,加号开头的是类方法。
- 实现必须写在
@implementation和@end之间。 - 声明必须写在
@interface和@end之间。 - 方法只能由对象调用,归类、对象所有。
函数:
- 函数调用不依赖对象。
- 函数内部不能直接通过成员变量名访问对象的成员变量。
- 函数可以写在文件的任何地方,但不能写在
@interface中。 - 函数可以写在
@implementation和@end之间,也可以被方法调用。
对象方法与类方法的区别
对象方法:
- 减号开头。
- 只能由对象调用。
- 实例变量不能在类方法中访问。
- 对象方法可以调用类方法。
类方法:
- 加号开头。
- 只能由类调用。
- 应用场合:当方法内部不需要使用成员变量时,可以改为使用类方法。
self关键字
self是指针类型,指向方法调用者。- 它用于访问当前对象的成员变量,如
self->member。 - 在对象方法中,
self代表对象;在类方法中,self代表类。 - 避免在类方法中使用
self调用对象方法,否则可能引发死循环。 super关键字用于调用父类的方法。
- 它用于访问当前对象的成员变量,如
super关键字
super的作用:直接调用父类中的某个方法。- 在对象方法中,
super调用父类的对象方法;在类方法中,super调用父类的类方法。
- 在对象方法中,
- 使用场景:子类重写父类的方法时,可以保留父类的一些行为。
常见错误
@end不能嵌套。- 方法的声明不能写在
@implementation里面。 - 方法的实现不能写在
@interface里面。 @interface是配对出现的,中间不能嵌套任何东西。- 成员变量不允许在
@interface里面进行初始化。 - 成员变量不能随便当成C语言中的变量。
- 不能用
static修饰成员变量和方法。 - 类的声明要放在创建对象前面。
面向对象的三大特性
封装:
- 设置
getter和setter方法。 - 成员变量与
_下划线开头区分。 - OC是弱语言,方法和成员变量只需写实现即可运行。
继承:
- 所有类的根类都是
NSObject。 - 使用冒号表示继承关系。
- 子类可以拥有父类的成员变量和方法。
- 继承的坏处:产生依赖,耦合度高。
- 继承的使用场合:重复代码、建立类关系、组合使用。
多态:
- 没有继承就没有多态。
- 父类指针可以指向子类对象。
- 多态的局限:父类变量不能直接调用子类特有的方法。
- 多态的注意:不能将子类类型转换为父类类型。
NSString字符串类型
- 使用
%@控制符输出NSSString字符串。- 示例:
NSString *str = @“luoguankun”;。
- 示例:
length方法:获取字符串长度,返回unsigned long。stringWithFormat方法:动态创建字符串,根据传入值。- 示例:
NSString *newstr = [NSString stringWithFormat:@"My age is %d and no is %d and name is %@”,age,no,name];。
- 示例:
发表评论
最新留言
很好
[***.229.124.182]2026年06月09日 05时13分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!