类和对象, 实例变量可见度, 自定义初始化
来源:互联网 发布:阿里云网络电视说明书 编辑:程序博客网 时间:2024/05/21 09:22
/* 1.类和对象 */
/******定义类*******/
1.新建文件,自动生成.h .m两个文件
2. .h接口部分
3. .m实现部分
创建一个Person类
Person.h
/*********声明特征( 实例变量 )***********/{ @public //姓名 字符串 /* 1. NSString 表示字符串, C语言中 char str[10] 2. 实例变量前面必须加下划线 _ 3. NSInteger 表示整形 */ NSString *_name; //性别 NSString *_sex; //年龄 NSInteger _age;}/*********声明行为( 方法 )***********//* 1. - 横线开头 加空格 2. 以 ; 分号 结尾*/- (void)sayHello;- (void)info;
Person.m
/* 实现方法 *//* 1. 方法后面没有分号 ; 2. NSLog 3. @ OC 对 C语言的扩展*/- (void)sayHello{ NSLog(@"Hello");}- (void)info{ NSLog(@"姓名:%@, 性别:%@, 年龄:%ld", _name, _sex, _age);}
/********创建对象**********/
1. 导入.h文件
2. 分配内存
3. 初始化
/* 1. alloc 系统提供的方法, 作用:分配内存
2. 指针表示对象的首地址, OC中, 用指针代指对象
3. init 系统提供的方法, 作用: 初始化
4. 分配内存和初始化连写
*/
Person *person1 = [Person alloc]; person1 = [person1 init]; //连写 Person *person2 = [[Person alloc] init];
/*********** 使用对象 ***********/
[person1 sayHello]; [person1 info];
/**********实例变量操作**********/
/***实例变量的赋值***/
/* @public 成员变量用-> 进行赋值 */
person1 -> _name = @"Tom"; person1 -> _age = 20; person1 -> _sex = @"男";
/***实例变量的取值****/
NSLog(@"姓名:%@", person1 -> _name);
总结:
1. 对象: 一个类的指针变量(指针类的实例变量)
2. 实例变量 : 已经初始化过后的变量
3. 成员变量 : { } 里面写的
4. id : 任意类型的指针变量
5. instancetype : 实例变量类型
6. .h 里写@class 来声明 , 可以是不存在的类,
.m 里写 #import 是拷贝代码, 真实存在的 (重复的不引用)
7. 方法 三要素 : 返回值类型, 方法名, 形参
形参 : 公共的可变(内容是可变的)的变量
8. - : 实例化方法(对象方法)
+: 类方法
(1) 当前方法中没有用到当前类的所有内容(成员变量, 属性)
(2) 简化代码 (可以把成员变量和属性 变成形参传进来)
10. 调用方法步骤:
(1) 先看这个方法属于哪个类的
(2) 看方法是什么类型的(实例化方法, 类方法)
(3) 看返回值类型
11. 封装需要考虑的问题 : 最开始的时候是否忘记赋值 ; 使用时能否进行二次修改
(1)必须给定的变量 (调用初始化方法)
(2)给使用者安全 (提供尽量少的接口 : 属性, 方法)
(3)简化代码 (重复性强)
成员变量可见度有3种:
1.@public类的外部和内部都可以访问的
2.@protected受保护的,外部不能访问, 内部可以访问
3.@private私有的,外部不能访问, 内部可以访问, 但是子类不能访问
默认是@protected 受保护的
/*对于@protected修饰实例变量,外部不能直接访问,提供两个方法,赋值方法,取值方法 */
创建一个Student类
Student.h
{ @protected NSString *_hobby; NSInteger _age;}/* 赋值方法 *//* 1. set 开头 2. 无返回值*/- (void)setHobby:(NSString *)hobby;- (void)setAge:(NSInteger)age;/** 多个参数赋值方法 **/// 参数形容词 age// 参数类型// 参数名- (void)setAge:(NSInteger)age hobby:(NSString *)hobby;/* 取值方法 *//* 1. 带有一个返回值的无参数的方法 2. OC中 只能带一个返回值*/// 返回值类型//参数- (NSString *)hobby;- (NSInteger)age;
Student.m
- (void)setHobby:(NSString *)hobby{ _hobby = hobby; }- (void)setAge:(NSInteger)age{ _age = age;}- (NSString *)hobby{ return _hobby;}- (NSInteger)age{ return _age;}
main.m
Student *stu = [[Student alloc]init]; // 赋值方法 [stu setHobby:@"游泳"]; // 取值方法 [stu hobby]; NSLog(@"爱好: %@", [p1 hobby]); // 赋值 [stu setAge:20]; //取值方法 NSLog(@"年龄: %lu", [p1 age]);
Student.h
- (id)initWithHobby:(NSString *)hobby age:(NSInteger)age;
Student.m
- (id)initWithHobby:(NSString *)hobby age:(NSInteger)age { _hobby = hobby; _age = age; return self;}
main.m
Student *stu1 = [[Student alloc]initWithHobby:@"Running" age:18];
- 类和对象, 实例变量可见度, 自定义初始化
- 2、类和对象-实例变量可见度
- 实例变量可见度及方法、自定义初始化方法、实例化方法、类方法、便利构造器
- OC中实例变量可见度、setter、getter方法和自定义初始化方法
- OC基础----类与对象、实例变量的可见度、继承
- OC之实例变量可见度和方法
- OC2_实例变量可见度和方法
- OC02 实例变量可见度和方法-1
- 实例变量的可见度
- Objective-C 类与对象的创建及初始化,实例的可见度及方法的创建
- OC实例变量可见度 setter方法和getter方法
- Objective-C_实例变量可见度和⽅法
- iOS入门(十六)实例变量可见度和方法
- Objective-C-实例变量的可见度和方法
- 实例变量可见度和方法(setter,getter 方法)
- 02 实例变量可见度、方法
- ObjectC----实例变量的可见度
- OC之实例变量可见度
- codevs1039
- MySQL:Got error 139 from storage engine
- HP 3PAR StoreServ 7200 存储调试相关
- vb.net 广播只有本机能收 Socket 客户端不能收 win8
- 精度问题
- 类和对象, 实例变量可见度, 自定义初始化
- sphinx 配置
- HDU 3605 Escape【最大流】
- 文档宽高和窗口事件
- 2015年ALPC暑期专题练习I (计算几何) B
- codevs1040
- 《SICP•2.1 数据抽象简介》
- boost Data & Time 笔记
- codeblocks快捷键(转载)