0Cday2 可见度, 方法

// Student.h

#import <Foundation/Foundation.h>

// 告诉编译器@class后的字符串作为类名使用,并未导入类的接口内容

// #import "AudiCar.h"

// @class可以处理嵌套导入的问题,把要引入的类当成一个已经存在的类来使用, 不导入接口内容

@class Student;

@interface Student :NSObject

//

{

   NSString *_stuName;

   NSString *_stuHobby;

   NSInteger _stuAge;

   CGFloat _stuScore;

   NSString *_stuSex;

 //   Student stu;    //并未导入类的接口内容

}

// +号方法是类来调用,所以管+号方法叫类方法, -号方法是由类实例出来的对象来调用, 也管-号方法叫实例方法

- (void)sayHi;


- (void)printStr:(NSString *)str printNum:(NSInteger)num;


// 成员变量可见度变成被保护之后,无法外部进行赋值, 取值操作,所以只能通过方法来实现赋值和取值, 对应setter getter 方法

// 设置器就是对成员变量进行赋值操作 setter方法


// setter方法名规范, set + 去掉下划线的成员变量名

- (void)setStuName:(NSString *)stuName;


- (void)setStuHobby:(NSString *)stuHobby;


- (void)setStuAge:(NSInteger)stuAge;


- (void)setStuScore:(CGFloat)stuScore;


- (void)setStuSex:(NSString *)stuSex;


// 对成员变量进行取值 getter方法

// getter方法的命名:不用加get, 直接用去掉下划线的成员变量名

- (NSString *)stuName;


- (NSString *)stuHobby;


- (NSInteger)stuAge;


- (CGFloat)stuScore;


- (NSString *)stuSex;

// 每一个成员变量对应一个设置器和一个访问器,他们成对出现

// 只有对一个成员变量赋值的方法,我们管它叫设置器, 对多个成员变量赋值,称为赋值语句


// 对多个成员变量进行赋值

- (void)setStuName:(NSString *)stuName

            stuSex:(NSString *)stuSex

            stuAge:(NSInteger)stuAge

          stuScore:(CGFloat)stuScore

          stuHobby:(NSString *)stuHobby;



// 自定义的初始化方法

// 自定义初始化方法一定要 - init 开头, 后面接With

// with之后可以把要初始化的部分接在后面

- (id)initWithStuName:(NSString *)stuName;

// 对五个成员变量进行赋值操作

- (id)initWithStuName:(NSString *)stuName

               stuAge:(NSInteger)stuAge

             stuHobby:(NSString *)stuHobby

               stuSex:(NSString *)stuSex

             stuScore:(CGFloat)stuScore;



@end

// Student.m 文件

//**********************************************************************

#import "Student.h"


@implementation Student

// 类的内部从@implementation开始,@end结束,在内部类可以使用任意可见度的成员变量


- (void)sayHi {

    NSLog(@"%@ %@ %ld %g %@",_stuName, _stuHobby,_stuAge, _stuScore,_stuSex);

}

//

- (void)printStr:(NSString *)str printNum:(NSInteger)num {

   NSLog(@"%@%ld", str, num);

}

/setter方法  设置器

- (void)setStuName:(NSString *)stuName {

   _stuName = stuName;

}

//

- (void)setStuHobby:(NSString *)stuHobby {

   _stuHobby = stuHobby;

}

//

- (void)setStuAge:(NSInteger)stuAge {

   _stuAge = stuAge;

}

//

- (void)setStuScore:(CGFloat)stuScore {

   _stuScore = stuScore;

}

//

- (void)setStuSex:(NSString *)stuSex {

   _stuSex = stuSex;

}

/ getter方法  访问器

- (NSString *)stuName {

    return_stuName;

}

//

- (NSString *)stuHobby {

    return_stuHobby;

}

//

- (NSInteger)stuAge {

    return_stuAge;

}

//

- (CGFloat)stuScore {

    return_stuScore;

}

//

- (NSString *)stuSex {

    return_stuSex;

}

// 对多个成员变量进行赋值

- (void)setStuName:(NSString *)stuName

            stuSex:(NSString *)stuSex

            stuAge:(NSInteger)stuAge

          stuScore:(CGFloat)stuScore

          stuHobby:(NSString *)stuHobby {

   _stuSex = stuSex;

   _stuScore = stuScore;

   _stuName = stuName;

   _stuHobby = stuHobby;

   _stuAge = stuAge;

}


// 初始化方法

- (id)init {

   _stuAge = 20;

   _stuName = @"师傅";

    return self;

}


// 自定义的初始化方法

- (id)initWithStuName:(NSString *)stuName {

   _stuName = stuName;

    return self;

}

// 自定义的初始化方法

- (id)initWithStuName:(NSString *)stuName

               stuAge:(NSInteger)stuAge

             stuHobby:(NSString *)stuHobby

               stuSex:(NSString *)stuSex

             stuScore:(CGFloat)stuScore {

   _stuName = stuName;

   _stuScore = stuScore;

   _stuHobby = stuHobby;

   _stuSex = stuSex;

   _stuAge = stuAge;

    return self;

}


@end


// AudiCar.h 文件

//*****************************************************************

#import <Foundation/Foundation.h>


@interface AudiCar : NSObject

{

   NSString *_name;

   NSString *_model;

   NSInteger _seat;

}

// 方法

// setter 设置器

- (void)setName;


- (void)setModel;


- (void)setSeat;

// getter 访问器

- (NSString *)getName;


- (NSString *)getModel;


- (NSInteger)getSeat;

// 自定义初始化方法

- (id)initWithName:(NSString *)name

             model:(NSString *)model

              seat:(NSInteger)seat;

@end


// AudiCar.m

//*************************************************************

#import "AudiCar.h"


@implementation AudiCar

// setter 设置器

- (void)setName {

   _name = @"奥迪";

}

//

- (void)setModel {

   _model = @"A6";

}

//

- (void)setSeat {

   _seat = 4;

}

//

// getter 访问器

- (NSString *)getName {

   return _name;

}

//

- (NSString *)getModel {

   return _model;

}

//

- (NSInteger)getSeat {

   return _seat;

}

///

// 自定义初始化方法

- (id)initWithName:(NSString *)name

             model:(NSString *)model

              seat:(NSInteger)seat {

   _name = name;

   _model = model;

   _seat = seat;

    return self;

}

@end


// main.m 文件

//***************************************************************

#import <Foundation/Foundation.h>

#import "Student.h"

#import "AudiCar.h"

typedefNS_ENUM(NSInteger, NSXiYouJi) {

    tangseng =4 >> 4,

    wukong =5 << 1,

    bajie =3 << 2,

    shaseng =1 << 3

};

int main(int argc,const char * argv[]) {

    

//    Student *stu = [[Student alloc] init];

    // 调用方法

    //[stu printStr:@"孙悟空" printNum:10];

    //方法名会在方法调用的时候会使用

    //形参的名会在声明和方法的实现的时候会用

    //只要有一个参数, 就要有一个冒号相对应,冒号不能省略

//    [stu setStuName:@"孙悟空"];

//    [stu setStuHobby:@"降妖除魔"];

//    [stu setStuAge:500];

//    [stu setStuSex:@"雄性"];

//    [stu setStuScore:100];

//    [stu sayHi];

//    NSLog(@"%@", [stu stuName]);

    

    

//    Student *stu = [[Student alloc] init];

//    [stu setStuName:@"孙悟空" stuSex:@"" stuAge:500 stuScore:80 stuHobby:@"降妖除魔"];

//    NSLog(@"%@, %ld, %@, %g, %@", [stu stuName], [stu stuAge], [stu stuHobby], [stu stuScore], [stu stuSex]);

    

    // 断点调试 + po检测

    

    // 创建一个对象

//    Student *stu = [[Student alloc]initWithStuName:@"八戒"];

//    NSLog(@"%@", [stu stuName]);

//    Student *stu1 = [[Student alloc] initWithStuName:@"菩萨"];

//    NSLog(@"%@", [stu1 stuName]);

//    Student *stu2 = [[Student alloc] initWithStuName:@"小田田" stuAge:21 stuHobby:@"" stuSex:@"尼玛" stuScore:100];


//    [stu2 sayHi];

    // 上述形式为消息机制

    

    

    

    // 练习

//    AudiCar *audi = [[AudiCar alloc] initWithName:@"宝马" model:@"X3" seat:4];

//    NSLog(@"%@", [audi getName]);

//    NSLog(@"%@", [audi getModel]);

//    NSLog(@"%ld", [audi getSeat]);

//    [audi setName];

//    [audi setModel];

//    [audi setSeat];

//    NSLog(@"%@", [audi getName]);

//    NSLog(@"%@", [audi getModel]);

//    NSLog(@"%ld", [audi getSeat]);

    

    // 练习

   NSLog(@"%ld",tangseng);

   NSLog(@"%ld",wukong);

   NSLog(@"%ld",bajie);

   NSLog(@"%ld",shaseng);

    

  

   return 0;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值