一、封装性
1.set方法
#import<Foundation/Foundation.h>
@interface Student : NSObject
{
//@public 成员变量尽量不要用@public
int age;
}
//提供一个方法给外界设置age属性值
//set方法
//方法声明
- (void) setAge:(int)newAge;
- (int)age; - (void)study;@end//方法实现@implementation Student-(void)setAge:(int)newAge;{if(newAge <= 0){newAge = 1;}age = newAge;}- (void) study;{NSLog(@"%d岁的学生在学习",age);}@endint main(){Student *stu = [Student New];[stu setAge:0];//set方法设置的age值
<span style="white-space:pre"></span>[stu age];//get方法返回的age值[stu study];}总结:set方法:1.作用: 提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤
2.命名规范: 1> 方法名必须以set开头
2> set后面跟上成员变量的名称,成员变量的首字母必须大写
3> 返回值一定是void
4> 一定要接收一个参数,而且参数类型跟成员变量类型一致
5> 形参的名称不能跟成员变量名一样
2.get方法
- (int)age
{
return age;
}
总结:get方法: 1.作用:返回对象内部的成员变量
2.命名规范: 1> 肯定有返回值,返回值类型肯定与成员变量类型一致
2> 方法名跟成员变量名一样
3> 不需要接收任何参数
二、继承性
1.继承的基本用法
// Animal的声明
@interface Animal : NSObject
{
@public
int weight;
}
- (void)eat;
@end
// Animal的定义
@implementation Animal
- (void)eat {
NSLog(@"吃吃吃-体重:%d", weight);
}
@end
子类在父类的基础上拓充属性和方法
// Bird的声明
@interface Bird : Animal
{
@public
int height;
}
- (void)fly;
@end
// Bird的定义
@implementation Bird
- (void)fly {
NSLog(@"飞飞飞-高度:%d", height);
}
@end
// Dog的声明
@interface Dog : Animal
{
@public
int speed;
}
- (void)run;
@end
// Dog的定义
@implementation Dog
- (void)run {
NSLog(@"跑跑跑-高度:%d", speed);
}
@end
总结:1. 子类方法和属性的访问过程:如果子类没有,就去访问父类的
2.NSObject的引出:全部OC类的最终父类,包含了一些常用方法,比如+new
3.父类被继承了还是能照常使用的
三、多态性
//多态的体现
Person *p = [Student new];
p->age = 100;
[p walk];
总结:1. 子类对象赋值给父类指针
2. 父类指针访问对应的属性和方法
收获心得:面向对象的三大特性使我们今后OC编程必须牢记的知识点,能够帮助我们快速的理解面向对象的编程理念。