A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 愿得一人心1111 中级黑马   /  2015-8-19 21:52  /  424 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、两个关键字:self 和 super

self 可以用在对象和类方法中
1)self用在对象方法中:指代的时调用当前对象方法的那个对象
2)self用在类方法中:指代的时当前类(实质是类对象)
总结:当self在方法中使用,谁调用这个方法,self指代的就是谁

super:使用super的地方,一定存在继承关系
super调用父类的方法

2、面向对象的其他特性:继承

继承概念: 假设有两个类:A B
继承是两个类之间的关系
假设声明B类的时候,
1)导入父类的头文件
2)设定继承关系
@interface 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)私有的变量
定义:.m中声明的变量,是不能被继承的

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]);

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马