#import <Foundation/Foundation.h> //---------.h
@interface Student : NSObject
{
//没有写paublic都默认为protected (受保护都)
NSString *_studentName; //实例变量
NSString *_studentSex;
NSString *_studentHobby;
NSUInteger _studentAge;
NSInteger _studentNumber;
}
- (void)study;
- (void)setName:(NSString *)name; // seter方法
- (void)setSex:(NSString *)sex;
- (void)setAge:(NSInteger)age;
- (void)setHobby:(NSString *)hobby;
- (void)setNumber:(NSUInteger)num;
- (NSString *)name; //geter方法,,印着get在OC中还有别的方法,这里不写
- (NSString *)sex;
- (NSInteger)age;
- (NSString *)hobby;
- (NSInteger)num;
//-----------多参数方法------------//
- (void)setName:(NSString *)name sex:(NSString *)sex age:(NSInteger)age hobby:(NSString *)hobby num:(NSInteger)num ;
//=-------------自定义初始化方法---------------//
- (id)init;
- (id)initWithName:(NSString *)name sex:(NSString *)sex;
@end
#import "Student.h" //----------------------.m
@implementation Student
- (void)study
{
NSLog(@"他的名字是:%@,他的性别是:%@,他今年:%ld岁,他的爱好:%@,他的学号是:%ld", _studentName, _studentSex, _studentAge, _studentHobby, _studentNumber);
}
- (void)setName:(NSString *)name //给实例赋值
{
_studentName = name;
}
- (void)setSex:(NSString *)sex
{
_studentSex = sex;
}
- (void)setAge:(NSInteger)age
{
_studentAge = age;
}
- (void)setHobby:(NSString *)hobby
{
_studentHobby = hobby;
}
- (void)setNumber:(NSUInteger)num
{
_studentNumber = num;
}
- (NSString *)name
{
return _studentName; // 返回实例,
}
- (NSString *)sex
{
return _studentSex;
}
- (NSInteger)age
{
return _studentAge;
}
- (NSString *)hobby
{
return _studentHobby;
}
- (NSInteger)num
{
return _studentNumber;
}
//多参数实例赋值
- (void)setName:(NSString *)name sex:(NSString *)sex age:(NSInteger)age hobby:(NSString *)hobby num:(NSInteger)num
{
_studentName = name;
_studentSex = sex;
_studentAge = age;
_studentHobby = hobby;
_studentNumber = num;
}
//自定义方法赋值
- (id)init
{
_studentSex = @"女";
return self;
}
- (id)initWithName:(NSString *)name sex:(NSString *)sex
{
_studentName = name;
_studentSex = sex;
return self;
}
@end
#import <Foundation/Foundation.h> //---------main函数
#import "Student.h"
#import "AudiCar.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Student *p = [[Student alloc] init];
[p setName:@"泥煤"]; //对实例进行逐一赋值
[p setSex:@"不男不女"];
[p setAge:112];
[p setHobby:@"女生"];
[p setNumber:201438];
//打印名字
NSString *name = [p name]; //有返回值,必须有接收器
NSLog(@"直接调用 :%@", name);
NSLog(@"%@", p);
[p study];
}
return 0;
}
结果:
2014-08-16 20:49:29.035 LessonClass2[4384:303] 直接调用 :泥煤
2014-08-16 20:49:29.038 LessonClass2[4384:303] <Student: 0x100201630>
2014-08-16 20:49:29.038 LessonClass2[4384:303] 他的名字是:泥煤,他的性别是:不男不女,他今年:112岁,他的爱好:女生,他的学号是:201438
Program ended with exit code: 0
实例变量的可见度---能不能在外界访问。。
@protected (受保护的,默认的)---实例变量只能在该类和其子类内操作
@public --------实例变量可以在类的外部和内部操作
@private----------实例对象只能在该类内访问
为什么不能使用@public
使用@public关键字,暴露类类内部的细节。
不符合面向对象语言的三大特性之一--封装
#import
导入头文件,即:导入文件中的内容到当前类
#import “ ”导入自定义类,#import < >导入类库中的头文件
功能类似C语言中的#include,但是可以避免头文件被重复导入
容易出现循环导入问题
@class
告诉编译器@class后的字符串作为类名使用,并未导入类的接口内容
有效避免嵌套循环导入 记得咋.m文件中导入#import "类名";
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。