1实例变量的可见度:
@public
    // @public 关键字 表明实例变量是公有的 类外 可以访问 类内 也可以访问
    // 类外:指的就是该类的.h和.m 之外
    // @public 关键字是使用的最少的 因为它破坏了封装的特性
    NSString *_name;
@protected
    // @protected 关键字 表明实例变量是受保护的,类外不可以访问,类内可以访问
    // 子类是可以继承@protected修饰的实例变量
    // 默认的 以后开发用的最多
    NSString *_gender;
@private
    // @private 关键字 表明实例变量是私有的,类外不可以访问,类内可以访问
    // 子类是不可以可以继承@private修饰的实例变量
    NSInteger _age;
}
2方法:
⽅方法是OC的核心,采用消息机制:[receiver message]
“-”message由对象来调⽤
“+”message由类来调⽤
//  无参无返回值
//  1 实例方法 :对象调用 - 方法
-(void)makeMoney;
-(void)payMoney;
-(void)warmBed;
// 2 类方法 :类的调用(直接用类名调用) + 方法
+(void)makeGrilFriend;
// 无参有返回值
-(NSString *)backName;
// OC 中 给实例变量赋值的方法 叫做setter方法(设置器)
// OC 中 读取实例变量的方法叫做getter方法(访问器)
// 有参无返回值
// OC方法中的参数是由冒号的个数来区分的 冒号后面放的是参数的类型由括号括起来 一般第二个参数往后,相当于参数的一个说明,它算在方法名内
//  -号是方法的类型 void是返回值类型 方法名setName:age:  参数是(NSString*)name和(NSInteger)age;
-(void)setName:(NSString *)name age:(NSInteger)age;
// 有参有返回值
-(NSInteger)getAge:(NSInteger)age;
3重点掌握
getter方法
OC 中 读取实例变量的方法叫做getter方法(访问器)
-(NSString *)brand;
setter方法
OC 中 给实例变量赋值的方法 叫做setter方法(设置器)
-(void)setBrand:(NSString *)brand;
自定义初始化
-(instancetype)initWithName:(NSString *)name
                                   gender:(NSString *)gender
                                         age:(NSInteger)age{
    _name =name;
    _gender = gender;
    _age = age;
    return self;}
4类的组合
Boy *b1 = [[Boy alloc]initWithName:@"赵成浩"];
Grill *g1 = [[Grill alloc]initWithName:@"宋慧乔"];
Family *f1 = [[Family alloc]initWithBoy:b1 gril: g1];
NSLog(@"%@",[[f1 boy]name]);
NSLog(@"%@",[[f1 gril]name]);
NSLog(@"%@ %@",[[f1 boy]name],[[f1 gril]name]);
5循环导入:
#include  C语言中使用包含头文件引入的是C语言中标准输入输出的函数库
#import    OC中引入头文件的意思
@class      适用于两个类之间互相引用 只是声明两个类,很好的防止了#import产生的循环引用问题
 +类 alloc
 -对象 -(void)setName:(NSString *)name age:(NSIntage)age;
6 语法糖 
语法糖 (.语法)(指针数组放指针,字符串)
*[p + i] = p[i]
NSLog(@"%@",p1.name);
 
 
代码:
#import <Foundation/Foundation.h>

@interface person : NSObject{
    NSString *_name;
    NSString *_gender;
    NSInteger _age;
}
-(NSString *)name;
-(void)setName:(NSString *)name;
-(NSString *)gender;
-(void)setGender:(NSString *)gender;
-(NSInteger)age;
-(void)setAge:(NSInteger)age;
-(instancetype)initWithName:(NSString *)name
                     gender:(NSString *)gender age:(NSInteger)age;
@end
#import "person.h"

@implementation person
-(NSString *)name{
    return _name;
}
-(void)setName:(NSString *)name{
    _name = name;
}
-(NSString *)gender{
    return _gender;
}
-(void)setGender:(NSString *)gender{
    _gender = gender;
}
-(NSInteger)age{
    return _age;
}
-(void)setAge:(NSInteger)age{
    _age = age;
}
-(instancetype)initWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age{
    _name =name;
    _gender = gender;
    _age = age;
    return self;
}
@end
#import <Foundation/Foundation.h>
#import "person.h"
int main(int argc, const char * argv[]) {
person *p1 = [[person alloc]initWithName:@"宋慧乔" gender:@"女" age:17];
    [p1 setName:@"范冰冰"];
    NSLog(@"%@",[p1 name]);
posted on 2015-11-21 16:46  sharkHZ  阅读(110)  评论(0编辑  收藏  举报