OC语法——类和继承

一.类和继承
1.继承:在已有的类的基础上进行扩展或者修改
2.继承的特性:
(1)子类继承类父类的所有特性(包含数据成员和成员函数)
(2)子类可以增加:
新的方法,新的实例变量,重新定义父类的方法
3.NSObject是Cocoa环境下的根类,NSObject中定义了类所有OC对象的基本方法
二.利用继承定义新的类
1.继承的定义

.h文件:
@interface 类名:父类
{
//实例变量的声明
}
//方法的声明
//父类方法的重写
@end

2.类定义和头文件
(1)子类继承父类必须引入父类的头文件
(2)子类除了能访问子类新增的实例变量,也能够访问父类中定义的实例变量,;
同时,子类也可以响应父类中的方法,但是如果子类重写了父类中的方法,就需要看实际运行中哪个方法被执行了
(3)

@interface A:NSObject
- (void)method1;
- (void)method2;
- (void)method3;
@end
@interface B:A
- (void)method2;
@end
@interface C:B
- (void)method1;
@end
int main()
{
   [B method2];//B中重写了method2,调用的是B定义的method2
   [C method1];//C中重写了method1,调用的是B定义的method1
   [C method3];//B和C中都没有重写method3,调用的是A定义的method3
}

(4)调用父类的方法:当子类中重写了父类的方法,但依然想调用父类中的方法
super关键字:和self不同的不能确定的指向某个对象,只能被用来调用父类的方法,既不能赋值也不能作为返回值

[super method2];//B中使用super关键字可调用父类A中method2
[self method2];//B中使用self调用的是当前类中的method2(B中的method2)

(5)初始化方法的定义
当新增的实例变量需要被初始化时,子类需要同和父类不同的初始化方法

//子类中重写init初始化方法时
- (id)init
{
 self = [super init];//调用了父类的init方法,会将父类中的实例变量都初始化
 if(self != nil)
 {
    ...//子类专有的初始化方法
 }
 return self;
}

使用alloc方法会将所有实例对象的变量都初始化成0,除了isa实例变量,如果子类新增的实例变量都要初始化成0,则省去init方法
(6)初始化方法的两种方法:
初始化init方法中将所有实例变量都初始化;
现在初始化方法中设置实例变量为默认值,然后调用其他方法来设置实例变量的值;
3.继承和方法的调用
(1)self:指的是收到当前消息的实例变量
(2) super:调用的父类的方法,调用的方法是由编译时类的继承关系决定的
4.方法定义时的注意事项
(1)局部方法:在类的接口中定义的方法是对外公开的,在类的实现(.m文件)中定义的方式局部方法,只可以类内自己调用,即使外部引入这个类的文件,也不能获的这个类的局部方法
编程时注意的事项:
当子类新增的方法不知道父类已经实现的局部方法而去重写这个方法,所以需要为局部方法前加上固定的前缀
(2)指定初始化方法
子类中重写父类中指定的初始化方法时,一定要调用父类的指定初始化方法,不能调用父类的非指定方法,否则父类的非指定初始化方法会调用指定的初始化方法,从而形成递归循环调用,造成崩溃

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OC(Objective-C)是一种面向对象的编程语言,它支持在中使用方法和block。方法是在中定义的方法,可以直接通过名来调用,而不需要实例化对象。而block是一种闭包,可以在代码中定义并传递给方法或函数,用于延迟执行特定的逻辑。 在OC中,可以使用方法来创建和操作的实例,例如通过一个工厂方法创建对象,或者在方法中实现一些与相关的逻辑。方法通常使用“+”符号进行声明和实现。 而block可以在方法中作为参数传递,也可以在方法中定义和使用。block可以捕获其所在作用域的变量,可以在方法内部延迟执行一段代码,也可以用于实现回调等功能。block的定义和使用使用“^(){}”语法方法和block可以结合使用,例如可以在方法中接受一个block作为参数,并在合适的时机调用该block,以实现一些灵活的逻辑。通过方法和block的组合,可以在OC中实现更加灵活和强大的功能,例如在异步操作中使用block来回调结果,或者在工厂方法中使用block来定制对象的初始化逻辑等。 总而言之,方法和block是OC中的两个重要特性,它们可以分别用于的操作和延迟执行逻辑,也可以结合使用以实现更加灵活的功能。在实际的OC开发中,方法和block通常会被广泛使用,可以帮助开发者更加简洁和灵活地实现代码逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值