oc是面向对象编程的语言,三个特点:继承,封装和多态.
oc中的方法分两种,一种是+号,类方法,这个方法一般由类来使用;一种是-号方法,一般由对象来使用
oc中的id相当于void *, 称为泛型指针,代表指针类型, 用id的时候不加*号
带参数的方法:去掉方法,数据类型.和变量剩下的部分就是参数的形容词,:必须留着,提示写参数,有急个冒号就写几个参数
//+ (void)test:(NSString *)str play:(NSString *)play eat:(NSInteger)eat;
// 方法名是test: play: eat: 留下来的部分称为参数的形容词,:必须留着,提示你写参数,有几个冒号就有几个参数
成员变量的可见度有四种
@public:公开的,共有的,这个可见度在类的外面可以进行对成员变量内容的设置,但是数据非常不安全,所有开发基本不用
@protected:被保护的,也是默认的可见度,被保护的成员变量可以在本类和继承它的子类进行使用,不能在主函数进行设置,安全级别提高
@private:私有的,安全级别最高,被它修饰的成员变量只能在当前类里进行内容设置,子类也不能使用
@package:系统的类,我们用不到,直接无视
成员变量赋值有两种方式:1.设置器和访问器(setter和getter方法):每一个成员变量有一对设置器和访问器,setter和getter只对一个成员变量进行设置:完整版,防止野指针,内存管理部分
<span style="font-size:18px;">// if (_per != per) {
// [_per release];
// _per = [per retain]; // 防止野指针
// }
</span>
2.对多个成员变量进行操作,叫做赋值语句,不是设置器
<span style="font-size:18px;">- (void)setStuName:(NSString *)stuName
Age:(NSInteger)age
score:(CGFloat)score
hobby:(NSString *)hobby
sex:(NSString *)sex;
</span>
继承:面向对象的重要特点,主要目的是为了解决代码重复的问题
子类可以继承父所有特征和行为,子类只需要写独有的成员变脸即可,其余都可以继承的方式得到,如果重复写,会报错
继承有明显的优势在于可以节省代码,但是弊端在于代码的耦合度太高,也就是类和类之间的关联性高.
oc可以使用继承,但是不推荐多层的继承,就是为了防止因为关联性高,造成牵一发而动全身
继承是单向的,一个类只能有一个父类,但是可以有多个子类,NSObject是OC里的根类,我们使用的init和alloc都是继承来的