标签:
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
成员变量的命名规范:
成员变量名要以 _开头
作用:
1.可以让成员变量和get方法的名称区分开
2.可以和局部变量区分开,一看到以_开头的变量一般都是成员变量
封装:
在定义成员变量时,尽量不要用@public 这种写法 ,而是使用set方法和get方法
@interface Student : NSObject { int _age; }
/* set方法: 作用:提供一个方法给外界设置成员变量的值,可以对里面的参数进行过滤 命名规范: 以set开头 set后跟成员变量的名字,成员变量的首字母大写 返回值是(void) 一定要接受一个参数,参数的类型和成员变量类型一样 形参的名称不能和成员变量名一样 */ - (void)setAge:(int)age
/* get方法 作用:返回对象内部的成员变量 命名规范: 肯定有返回值,返回值类型肯定与成员变量类型一致 方法名跟成员变量名一样 不需要接收任何参数 */ - (int)age; @end
int main() { Student *stu = [Student new]; [stu setAge:10]; //调用set方法设置成员变量的值 [stuage]; //调用get方法读取成员变量的值 return 0; }
如果内部成员变量制度不能修改只需要提供get方法即可
对象方法
1>减号 - 开头
2>只能由对象来调用
3>对象方法中能访问当前对象的成员变量(实例变量)
类方法
类方法以+开头,
只能由类调用.
实例变量(成员变量)不能在类方法中访问
类方法调用类方法会死循环
+ (void)test { NSLog(@"%33"); [Person test] } //会一直输出33 死循环
好处和使用场合:
1>不依赖于对象,执行效率高
2>能用类方法尽量用类方法
3>当方法内部不需要使用到成员变量时,可以利用类方法
对象方法
对象方法以-开头
对象方法只能由对象来调用
能访问当前对象的成员变量
对象方法可以调用类方法
允许类方法和对象方法同名
工具类:基本不包含任何成员变量,里面的方法基本都是类方法,可以调用之前的类方法
self 关键字
self 是一个指针指向调用当前方法的对象
谁调用了当前方法,self就代表谁
self出现在对象方法中,self就代表对象
self出现在类方法中,self就代表类
self用途
1> 对象方法中可以通过 self->成员变量名访问当前对象内部的成员变量名
2> [self 方法名]; [self bark]; 可以调用其他对象方法和类方法
3>谁调用了当前方法,self就代表谁
* self出现在对象方法中,self就代表对象
* self出现在类方法中,self就代表类
2>在对象方法利用"self->成员变量名"访问当前对象内部的成员变量
self注意点
1.要清楚明白是对象还是类在调用self
2.self不能调用函数方法
继承
是类与类之间的关系
1.继承的好处:
1>抽取重复代码
2>建立了类之间的关系
3>子类可以拥有父类中的所有成员变量和方法
2.注意点
1>基本上所有类的根类是NSObject
2>父类必须声明在子类的前面
3>子类不能拥有和父类相同的成员变量
4>调用某个方法时,优先去当前类中找,如果找不到,去父类中找
重写:子类重新实现父类中的某个方法,覆盖父类以前的做法
父类中声明不实现,在子类中实现也是可以的
使用场合
当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中
当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类
坏处:耦合性太强
//Animal的声明 @interface Animal : NSObject { int _age; } - (void)setAge:(int)age; - (int)age; @end //Animal的实现 @implementation Animal - (void)setAge:(int)age { _age = age; } - (int)age { return _age; } @end //定义一个dog类 // : Animal 继承了Animal,相当于拥有了Animal里面的所有成员变量和方法 // Animal称为Dog的父类 // Dog称为Animal的子类 @interface Dog : Animal @end @implementation Dog @end int main() { Dog *d = [Dog new]; [d setAge:10]; NSLog(@"age=%d", [d age]); return 0; }
关键字super的作用
1.直接调用父类中的某个方法
2.super处在对象方法中,那么就会调用父类的对象方法
super处在类方法中,那么就会调用父类的类方法
3.使用场合:子类重写父类的方法时想保留父类的一些行为
,是子类在父类基础上的延伸
*/
多态
只有由继承才有多态
多态
没有继承就没有多态
代码的体现:父类类型的指针指向子类对象
好处:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象
局限性:
父类类型的变量不能直接调用子类特有的方法。必须强转为子类类型变量后,才能直接调用子类特有的方法
*/
标签:
原文地址:http://www.cnblogs.com/lxiaohei103/p/4382315.html