OC封装,继承,多态
1封装
就是将一段代码装成一个整体,将内部的实例变量和方法设置访问权限
1. set方法
1.作用:提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤
2.命名规范:
1>方法名必须以set开头
2> set后面跟上成员变量的名称,成员变量的首字母必须大写
3>返回值一定是void
4>一定要接收一个参数,而且参数类型跟成员变量类型一致
5>形参的名称不能跟成员变量名一样
2. get方法
1.作用:返回对象内部的成员变量
2.命名规范:
1>肯定有返回值,返回值类型肯定与成员变量类型一致
2>方法名跟成员变量名一样
3>不需要接收任何参数
3.注意细节
/*成员变量的命名规范:一定要以下划线 _开头
作用:
1.让成员变量和get方法的名称区分开
2.可以跟局部变量区分开,一看到下划线开头的变量,一般都是成员变量
*/
int _no;
Sex_sex;
}
// sex的set和get方法
- (void)setSex:(Sex)sex;
- (Sex)sex;
// no的set和get方法
- (void)setNo:(int)no;
- (int)no;
2.继承
/*
1.继承的好处:
1>抽取重复代码
2>建立了类之间的关系
3>子类可以拥有父类中的所有成员变量和方法
2.注意点
1>基本上所有类的根类是NSObject
*/
/********Animal的声明*******/
@interface Animal : NSObject
...
/********Animal的实现*******/
@implementation Animal
...
********Dog*******/
// : Animal 继承了Animal,相当于拥有了Animal里面的所有成员变量和方法
// Animal称为Dog的父类
// Dog称为Animal的子类
@interface Dog : Animal
@end
@implementation Dog
@end
/********Cat*******/
3多态
/*
多态
1.没有继承就没有多态
2.代码的体现:父类类型的指针指向子类对象
3.好处:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象
4.局限性:
1>父类类型的变量不能直接调用子类特有的方法。必须强转为子类类型变量后,才能直接调用子类特有的方法
*/
// 如果参数中使用的是父类类型,可以传入父类、子类对象