1.封装
1.属性的set方法
作用 : 提供一个方法给外界设置成员变量值,可以在方法里面对参数进行过滤
2.命名规范:
1》方法名必须是set开头
2》set后面是成员变量名称,首字母大写
3》返回值一定是void
4》一定要接收一个参数,参数类型与成员变量类型一致
{
NSString *_name;
}
- (void)setName:(NSString*)newName;
2.属性的get方法
作用: 返回对象内部的成员变量
2.命名规范:
1》肯定有返回值,返回值类型跟成员变量类型一致
2》方法名跟成员变量名一样
3》不需要接收任何参数
- (NSString*)name;
//注意// 只需要访问对象是,不允许访问对象时,只给对方提供get方法
只需要改变对象值,不需要访问对象是,可以只提供对象set方法,或者在参数前使用redoly
set封装还有一个好处,在值发生改变的时候可以做一些其他的事情:
比如:一个学生,语文成绩int yu 数学成绩int shu 总成绩int zong
//在设置语文成绩和数据成绩的时候 计算 他的总成绩也随着其他成绩的改变而改变
- (void)setYu:(int)yu{
_yu = yu;
_zong = _yu + _ shu;
}
2.继承
继承的好处:
1》建立类之间的关系
2》子类拥有父类的所有成员变量和方法。
继承的注意点:
1》子类不能拥有和父类相同的成员变量
2》子类可以重写父类的方法,覆盖掉父类的方法。前提:父类的方法声明必须在子类前,
3》调用某个对象的方法时,优先去对象中找,如果找不到,去父类中找。顺着[superclass 往上找]
4》在子类方法中,想调用父类的方法,使用super关键字
继承的坏处:
1》耦合性太强。
继承的使用场合
1》当两个类拥有相同的属性和方法时,就可以将相同的东西抽取到一个父类中
2》当a类拥有b类的部分方法和属性时,可以考虑让b类继承a类
//当a类拥有b类的部分方法和属性时,可以让a类拥有b类对象
ps: 继承的特点一个时发展更多的功能,另一个节省代码,所以,父类在创建一个方法时,不妨使用 [[self alloc]init]来创建;
+(instancetype)person{
return [[self alloc]init];
}
+(instancetype)personWithAge:(int)age{
person *p = [self person];
p.age = age;
return p;
}
3.多态
没有继承就没有多态
1.》父类指针指向子类对象
// Person 继承与 NSObject 用NSObject指针指向Person对象
Person *p = [[Person alloc]init];
NSObject *obj = [[Person alloc]init];
2》多态一般用在参数中,只能是用父类指针指向子类对象
3》注意点:父类对象不能用来调用子类方法
4》将obj转化成person对象。
NSObject *obj = [[Person alloc]init];
Person *p1 = (Person*)obj;
5》好处:如果方法中使用的是父类类型,可以传入父类或者子类的对象。