黑马程序员--IOS基础第十九天(OC)



1.两个关键字: self super
self
可以用在对象和类方法中
1
self用在对象方法中:指代的时调用当前对象方法的那个对象
2
self用在类方法中:指代的时当前类(实质是类对象)
总结:当self在方法中使用,谁调用这个方法, self指代的就是谁
super:
使用super的地方,一定存在继承关系
super
调用父类的方法
2
、面向对象的其他特性:继承
继承概念:
假设有两个类: A B
继承是两个类之间的关系
假设声明B类的时候,
1
)导入父类的头文件
2
)设定继承关系
@interface B : A ----> B
类继承了A
@end
关于继承注意事项:
1
)单一继承(一个类只能继承另外一个类)
2
OC支持多层继承( Animal <-----Dog <------BigYellowDog
3)
子类可以继承父类所有的属性和方法
使用@private修饰的成员变量 可以被子类继承,但是不能访问
4
)子类可以直接使用从父类继承过来的属性和方法
子类可以调用子类的方法,也可以调用从父类的方法(super
子类可以使用super调用父类的方法
5)父类只能调用父类自己的方法
6
)子类可以定义和父类同名的方法(方法的重写)
7
)子类不能定义和父类同名的变量
8
)方法的执行的顺序:先执行子类的--->找父类--->父。。。-->NSObject-->报错
3
、成员变量修饰符的使用
成员变量修饰符有4
@public
共有的,作用域:在任何类中都可以通过对象使用成员变量
@protected
受保护的,默认修饰,作用域:只能在当前类或者子类中使用
@private
私有的,作用域:只能在本类(本文件)使用,可以被子类继承,但是不能在子
类中使用
@package
框架级别,只能在框架中使用
4
、私有方法
私有方法的实现:
1
)通过类别
2
)常见的书写私有方法
定义: .m中定义一个方法,但是没有.h中声明,那这个时候,该方法就是一个私有方法
(
不是真正的私有,只是被隐藏了)
调用:在类中 [self 私有方法名];
3
)私有的变量
定义: 1 .m中声明的变量,是不能被继承的
2

@implementation xxx
{
//
私有的成员变量
}
5
description 使用
NSLog(@"%@",dog);
descriptioin
方法,在我们每次以%@的形式打印对象的时候, 会默认调用的方法
方法有两个:
1)-(NSString *)description;
对象方法:
Person *p = [Person new];
NSLog(@"%@",p); //
会调用description 对象方法
description
应用场景:
在子类中重写该方法,输出该对象的成员变量值。
-(NSString *)description{
return [NSString stringWithFormat:@"age=%d,name=%@",_age,_name];
}
NSLog(@"%@",p); // age=18,name=zhangsan
2)+(NSStiring *)description{
}
// [p class]----->Person(
类对象)
NSLog(@"%@",[p class]);
6
、面向对象特性:多态
多态的概念:
不同的对象以自己的方式响应父类的一个方法
多态的前提:
1
)要有继承关系
2
)要有同名方法
3
)要存在方法的重写
多态的核心:
用父类的指针指向子类的对象
Animal *ani = [Dog new];
[ani run]; // dog run
多态的注意点:
1
)如果存在多态,父类是可以访问子类特有的方法
假设 子类 Dog 有一个特有的方法bark
[dog bark];
Animal *an2 = [Dog new];
[(Dog*)an2 bark]; //
把父类的指针,强制类型转换
2
)如果不存在多态,父类是不可以访问子类特有的方法的
Animal *an3 = [Animal new];
[(Dog*)an3 bark]; //
错误的,不能强制转换
7
、类的本质(了解)
类的本质也是一个类类型对象(类对象)
Person *p = [Person new]; //p
是一个实例对象,pPerson类型
Person
实质也是一个对象,又称为 类对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值