封装
1). 属性不能给外界访问,因为属性⼀一旦被外界访问,那么外界就可以任意的给属 性赋值。只要数据类型⼀一致,都是可以的。所以,修饰符@public就不应该存在了。
2). 专⻔门写1个⽅方法,为属性赋值。
在⽅方法的内部就可以判断赋值的数据是否符合逻辑。如果符合就将其赋值给属性,否则就坐默认处理。
3). 如果在外部想要获得属性的值
那么就再写1个⽅方法专⻔门⽤用来返回属性的值。
OC类的setter和getter的规范
1 > 属性⼀一定要保护起来,不要被外界直接访问。2 > setter的规范:⽤用来为属性设置值,并且可以做逻辑判断
1.这⼀一定是1个对象⽅方法,因为setter去对对象的属性赋值。
2.这个⽅方法是专⻔门为对象的属性赋值的,所以没有返回值。
3.⽅方法名,必须以 set 开头,后⾯面跟属性名(去掉下划线),并且属性名的⾸首 字⺟母⼤大写。4.这个⽅方法⼀一定是有参数的。并且参数的类型和属性的类型⼀一致。 参数的名称和属性名⼀一致,只是去掉下划线。
5.在⽅方法的内部,判断传⼊入的数据是否符合逻辑验证, 如果符合就将传⼊入的数据赋值给属性,否则就做默认处理。
6.在外部如果要对这个属性赋值,是⽆无法直接访问属性赋值的。 那么这个时候就必须调⽤用set⽅方法来赋值 ⽽而set⽅方法做了过滤。
3 > getter的规范:得到属性的值—>这⼀一定是1个对象⽅方法,因为get是要娶返回对象的属性的值。
—>⼀一定有返回值,因为这个⽅方法要得到属性的值 返回值的类型⼀一定是和属性的类型相同的。
—>⽅方法名的规范,属性名去掉下划线。
—>⼀一定没有参数,因为这个⽅方法是直接返回属性的值。
—>⽅方法内部,直接返回属性的值
—>这个时候外部如果想要得到属性的值,不能直接访问属性了。
⽽而是调⽤用getter⽅方法来得到属性的值。
set⽅方法
1> 作⽤用:
1)、提供⼀一个⽅方法给外界设置成员变量值.
2)、可以在⽅方法⾥里⾯面对参数进⾏行相应过滤.2 > 命名规范
1)、⽅方法名必须以set开头。
2)、set后⾯面跟成员变量名称,成员变量的⾸首字⺟母必须⼤大写。
3)、返回值⼀一定是void。
4)、⼀一定要接收⼀一个参数,⽽而且参数类型跟成员变量类型⼀一致。
5)、形参的名称不能跟成员变量名⼀一样。
get⽅方法
1 > 作⽤用:返回对象内部的成员变量
2 > 命名规范:
1)、肯定有返回值,返回值类型肯定与成员变量类型⼀一致
2)、⽅方法名跟成员变量名⼀一样
3)、不需要接收任何参数成员变量的命名规范
都以下划线开头“_”,如 int _age;
继承的语法
@interface ⼉儿⼦子类名 : ⽗父亲类名 {
属性;
}
声明⽅方法;
@end
@implementation ⼉儿⼦子类名 实现⽅方法
@end
@interface A:B @end
基类和派⽣生类之间的关系
A类是B类的⼦子类,B类是A类的⽗父类
A类从B类继承,B类派⽣生出A类。
3.1、继承的⺫⽬目的 ⼉儿⼦子类想拥有⽗父亲类中的成员,但是不想⾃自⼰己去定义,⽽而是想凭空拥有。
3.2、继承的效果: ⼦子类从⽗父类继承,就代表⼦子类⽆无条件拥有⽗父类的全部成员。
访问变量修饰符
@public 公共变量:在任何位置都可以访问。
@private 私有变量:只有在类当中的⽅方法内可以访问。 @protect 半私有变量:可以在⾃自⼰己和⼦子类当中访问。 @package 半公开变量:在相同框架内可以访问。
OC中的私有⽅方法
1 > ⽅方法写在实现⽂文件当中
2 > ⽗父类私有的⽅方法在⼦子类中定义同名⽅方法不叫做重写. 6、OC中的私有属性
1 > 属性写在实现⽂文件当中.
2 > 可被⼦子类继承,但是不能被⼦子类使⽤用。
3 > ⼦子类可对⽗父类私有属性进⾏行重复定义。
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
NSString *_name;
}
-(void)setName:(NSString *)name;
-(NSString *)name;
-(void)dazhaohu;
@end
#import "Person.h"
@implementation Person
-(void)setName:(NSString *)name{
_name=name;
}
-(NSString *)name{
return _name;
}
-(void)dazhaohu{
NSLog(@"hello");
}
@end
#import "Person.h"
@interface Chinese : Person
-(void)dazhaohu;
@end
@implementation Chinese
-(void)dazhaohu{
NSLog(@"吃了吗?");
}
#import "Person.h"
@interface japan : Person
-(void)dazhaohu;
-(NSString *)description;
@end
-(void)dazhaohu{
NSLog(@"aligadou");
}
-(NSString *)description{
return @"zhansan";
}
@interface Golipang : Person
-(void)dazhaohu;
@end
#import "Golipang.h"
@implementation Golipang
-(void)dazhaohu{
NSLog(@"思密达");
}
@end
结果