第二讲实例变量可见度,set/get方法,自定义初始化(代码) 及description的使用

一.实例变量可见度,setter和getter方法,自定义初始化的综合使用实例

Person.h文件

 1 #import <Foundation/Foundation.h>
 2
 3 @interface Person : NSObject
 4 {
 5     @private
 6     NSString *_name;
 7     int _age;
 8     @protected
 9     NSString *_sex;
10     NSString *_hobby;
11     @public
12     NSString *_address;
13     BOOL _isMarried;
14 }
15 -(void)initWithName:(NSString*)newName age:(int)newAge;
16
17 -(id)initWithName:(NSString*)newName age:(int)newAge sex:(NSString*)sex;
18
19 -(void)setName:(NSString*)name;
20 -(NSString*)name;
21
22 -(void)setAge:(int)age;
23 -(int)age;
24
25 -(void)setHobby:(NSString*)hobby;
26 -(NSString*)hobby;
27
28 -(void)setAddress:(NSString*)address;
29 -(NSString*)address;
30
31 -(void)setSex:(NSString*)sex;
32 -(NSString*)sex;
33
34 -(void)setIsmarried:(BOOL)ismarried;
35 -(BOOL)ismarried;

42 @end

Person.m文件

 1 #import "Person.h"
 2
 3 @implementation Person
 4
 5 -(void)initWithName:(NSString*)newName age:(int)newAge
 6 {
 7     _name = newName;
 8     _age = newAge;
 9 }
10
11 -(id)initWithName:(NSString*)newName age:(int)newAge sex:(NSString*)newSex
12 {
13     _name = newName;
14     _age = newAge;
15     _sex = newSex;
16
17     return self;
18 }
19
20 -(void)setName:(NSString*)name
21 {
22     _name = name;
23 }
24 -(NSString*)name
25 {
26     return _name;
27 }
28
29 -(void)setAge:(int)age
30 {
31     _age = age;
32 }
33 -(int)age
34 {
35     return _age;
36 }
37
38 -(void)setHobby:(NSString*)hobby
39 {
40     _hobby = hobby;
41 }
42 -(NSString*)hobby
43 {
44     return _hobby;
45 }
46
47 -(void)setAddress:(NSString*)address
48 {
49     _address = address;
50 }
51 -(NSString*)address
52 {
53     return _address;
54 }
55
56 -(void)setSex:(NSString*)sex
57 {
58     _sex = sex;
59 }
60 -(NSString*)sex
61 {
62     return _sex;
63 }
64
65 -(void)setIsmarried:(BOOL)ismarried
66 {
67     _isMarried = ismarried;
68 }
69 -(BOOL)ismarried
70 {
71     return _isMarried;
72 }
73
74 //description 方法的默认实现是返回值和对象的内存地址,通过重写descripton 方法能够起到快速输出的作用
75 -(NSString*)description
76 {
77     return [NSString stringWithFormat:@"%@ %d %@",_name,_age,_sex];
78
79 }

86 @end

main.m文件

 1 #import <Foundation/Foundation.h>
 2
 3
 4 #import "Person.h"
 5
 6
 7 int main(int argc, const char * argv[]) {
 8     @autoreleasepool {
 9
10
11         Person *p1 = [[Person alloc]init];
12         [p1 setName:@"刘亦菲"];
13         [p1 setAge:20];
14         [p1 setAddress:@"香港"];
15         [p1 setIsmarried:YES];
16         NSString *_name = [p1 name];
17         int _age = [p1 age];
18         NSString *_address = [p1 address];
19         BOOL _isMarried = [p1 ismarried];
20
21         NSLog(@"%@  %d %@ %hhd" ,_name,_age,_address,_isMarried);
22
23         NSLog(@"%@ %d %@ %hhd",[p1 name],[p1 age],[p1 address],[p1 ismarried]);
24
25         Person *p2 = [[Person alloc]initWithName:@"小明" age:16  sex:@"男"];
26         //初始化标准输出格式
27         NSLog(@"%@  %d  %@",[p2 name],[p2 age],[p2 sex]);
28
29          //通过重写descripton 方法能够起到快速输出的作用
30         NSLog(@"%@",p2);
38
39     }
40     return 0;
41 }
时间: 2024-12-17 03:55:12

第二讲实例变量可见度,set/get方法,自定义初始化(代码) 及description的使用的相关文章

第二讲、实例变量可见度、方法

一.实例变量可见度 可见度         特点 public          实例变量可以在类的外部和内部操作 protected    实例变量只能在该类和其子类内操作     默认 private        实例变量只能在该类内访问 内部:相应类的@implementation和@end之间 @interface Person : NSObject { @public NSString*_name; @protected NSString*_gender; int_age; //年龄

OC总结第二讲:实例变量可见度和方法

实例变量有3种常用的可见度:@public  @protected  @private public(公有的) 实例变量可以在类的外部和内部操作 protected(受保护的,默认的) 实例变量只能在该类和其子类内操作 private(私有的) 实例对象只能在该类内访问 所谓的内部,指的是相应类的@implementation和@end之间 方法: 1.类方法:只能类使用 例如: +(id)alloc 注意:类方法中不能使用实例变量 2.实例方法: 只能对象使用, - (void)satHi 程

实例变量可见度、方法、setter、getter

oc中的消息机制:如果为类方法,消息接收者为类名 如果为实例方法,消息接收者为对象名 消息带参数给参数,不带就不给 消息有返回值,定义相同类型的变量接收,没有就不需要定义变量 //各实例变量的课件度 NSInteger _height; @public NSString *_name;//为什么不默认用@public 修饰实例变量,破坏了封装性,不安全: @protected NSString *_gender; @private NSInteger _age; //其所占字节数根据操作系统位数

OC中实例变量可见度、setter、getter方法和自定义初始化方法

在对类和对象有一定了解之后,我们进一步探讨实例变量的可见度等相关知识 实例变量的可见度分为三种情况:public(共有),protected(受保护的,默认),private(私有的),具体的不同和特点如下: 具体的使用示例如下: 编程时默认的可见度是@protectde,为什么不使用@public呢? 因为OC是面向对象编程,使用@public关键字,暴漏了类内部的细节,从而不符合面向对象语言的三大特性之一——封装 实例变量经过@protectde修饰之后,我们就不能在该类和其子类外操作,例如

Oc(实例变量可见度与方法)(InstanceVariableAndMethod)

main函数 // //  main.m //  2-3 LessionInstanceVariableAndMethod // //  Created by lanouhn on 15/2/3. //  Copyright (c) 2015年 lanouhn. All rights reserved. // #import <Foundation/Foundation.h> #import "Boy.h" #import "MobilePhone.h"

Obj-c2[实例变量可见度和方法]

////setter方法  设置器,专门给一个实例变量赋值的方法//- (void)setName:(NSString *)name;//- (void)setAge:(NSInteger)age;//- (void)setSex:(NSString *)sex;//- (void)setWeight:(CGFloat)weight;//- (void)setHeight:(CGFloat)height;//////getter方法 访问器,用来得到一个实例变量内容的方法//- (NSStrin

Objective-C学习笔记_实例变量可?度及方法

? 实例变量可?度 可见度 特点 public(公有的) 实例变量可以在类的外部和内部操作 protected(受保护的,默认的) 实例变量只能在本类和其?类内部操作 private(私有的) 实例对象只能在本类内访问 所谓的内部,指的是相应类的@implementation和@end之间. 示例代码如下: #import <Foundation/Foundation.h> @interface Person : NSObject { @public NSString *_hobby; /**

实例变量可见度修饰符

1.public;2.protected;3.private;4.package //1.public (公共的), 作用域是不受限制的被public修饰的实例变量,不仅可以在所属的类和子类中直接访问,而且还可以被其他类定义的方法直接访问 //2.protected (受保护的),如果实例变量不写修饰符.默认为protected,作用域:所属类和子类定义的方法中可以访问 //3.private(私有的),作用域:所属的类的方法调用,不能被子类定义的方法调用 //4.package(包,框架),了

【OC学习-9】利用@property属性和@synthesize简化实例变量的存取器方法

如果我们在一个类中定义了3个实例变量,那么如果要写存取器方法的话,需要写6个(每个实例变量各一个setter和getter).现在的简化方法是: (1)在类的.h文件里,只要写了属性,那么这个实例变量就可以被操作,如果想要不被操作保证安全,那么就不要声明属性,只要写在实例变量里即可. #import <Foundation/Foundation.h> //我们一般会省略实例变量的写法,因为写了属性后,一般会自动生成同名的实例变量 @interface ASStudent : NSObject{