黑马程序员--学习OC面向对象特性

self和super

1、self关键字

在动态方法中,self代表着对象
在静态方法中,self代表类
[self 方法名]:调用其他方法
self可以简单理解为指自己

2、Super关键字

在子类中重写方法时,可以让调用者跳过这一层而调用父类中的方法。
作用:
(1)直接调用父类中的某一个方法
(2)Super处在对象方法中,那么就会调用父类的对象方法;super处于类方法中,那么就会调用父类的类方法。
使用场景:子类在重写父类方法时,想要保留父类的一些行为。

OC面向对象—继承

1、继承

这里写图片描述

在这里动物是猫类和狗类的父类,黑猫和白猫类是猫类的子类。也就是说猫类和狗类继承动物,黑猫、白猫继承猫类。

2、基类和派生类之间的关系

这里写图片描述

注意:
1)基类的私有属性能被继承,不能被使用。
2)OC中的继承是单继承:也就是说一个类只能一个父类,不能继承多个父类

3、继承的注意事项

1)子类不能定义和父类同名的变量,但是可以继
2)OC类支持单一继承,不支持多继承
3)OC类支持多层继承

4、继承体系中方法调用的顺序

1)在自己类中找
2)如果没有,去父类中找
3)如果父类中没有,就去父类的父类中
4)如果父类的父类也没有,就还往上找,直到找到基类(NSObject)
5)如果NSObject也没有就报错了

5、实例变量作用域

(1)@public (公开的)在有对象的前提下,任何地方都可以直接访问。
(2)@protected (受保护的)只能在当前类和子类的对象方法中访问
(3)@private (私有的)只能在当前类的对象方法中才能直接访问
(4)@package (框架级别的)作用域介于私有和公开之间,只要处于同一个框架中就可以直接通 过变量名访问

注意:
(1)在@interface @end之间声明的成员变量如果不做特别的说明,那么其默认是 protected的。
(2)一个类继承了另一个类,那么就拥有了父类的所有成员变量和方法,注意所有的成员变量它 都拥有,只是有的它不能直接访问。

description方法及重写

1、description方法概述

descriptong方法默认返回对象的信息(默认实现是返回类名和对象的内存地址) NSLog(@”%@”, objectA);这会自动调用objectA的descriptong方法来输出ObjectA的descriptong方法来输出ObjectA的信息。

description方法是基类NSObject 所带的方法,因为其默认实现是返回类名和对象的内存地址, 这样的话,使用NSLog输出OC对象,意义就不是很大,因为我们并不关心对象的内存地址,比较关 心的是对象内部的一些成变量的值。因此,会经常重写description方法,覆盖description方法 的默认实现

2、description重写的方法

//对象的description方法
-(NSString *)description{
return [NSString stringWithFormat:@”狗腿的个数:%d,狗的眼睛个数:%d”,_tuiNum, _eyeNum];
}

这里写图片描述

//类的description方法
+(NSString *)description{ return @”+开头的方法”;
}
这里写图片描述

多态

多态指的是: 同一种行为,对于不同的事物具有不同的表现形式。 这就叫做多态。

多态的条件:
有继承关系、有方法重写
父类的声明变量指向子类对象。
//代码体现:用父类类型的指针指向了子类对象,这就是多态
狗 *g = [狗 new];
动物 *a = [狗 new];

多态的优点

多态的主要好处就是简化了编程接口。它容许在类和类之间重用一些习惯性的命名,而不用 为每一个新加的函数命名一个新名字。这样,编程接口就是一些抽象的行为的集合,从而和实现 接口的类的区分开来。

代码实现:
Animal *animal = nil;
//实例化猫的对象
animal = [Cat new];
[animal eat];
//实例化狗的对象
animal = [Dog new];
[animal eat];

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值