黑马程序员 oc对象的方法成员变量

#import <Foundation/Foundation.h>

typedef enum {

SexMan,

SexWoman

} Sex;

@interface Person : NSObject

{

/*

成员变量名前用下划线有3个用处

1>方便程序员之间的交流,一看到下划线就知道这个事成员变量

2>为了与getter方法中的方法名区分开

3>不与局部变量名重合

*/

int _age;

Sex _sex;

}

// 设置setter和getter方法

// 为了数据的严密性和安全性,采用封装方式

- (void)setAge:(int)age;

-(int)age;

- (void)setSex:(Sex)sex;

- (Sex)sex;

// 创建run方法

-(void)run;

@end

@implementation

- (void)run

{

NSLog(@"性别为%d,年龄为%d的人在跑步",_sex, _age);

}

- (void)setAge:(int)age

{

if(age <= 0) _age = 1;

_age = age;

}

-(int)age

{

return _age;

}

- (void)setSex:(Sex)sex

{

_sex = sex;

}

- (Sex)sex

{

return _sex;

}

@end

int main()

{

// 在oc中只能通过指针来访问对象

Person *p = [Person new];

[p setAge:20];

int a = [p age];

Person *p1 = p;

[p1 setAge:25];

[p1 age];

[p1 setSex:SexMan];

[p1 sex];

[p1 run];

}

时间: 2024-10-06 21:06:13

黑马程序员 oc对象的方法成员变量的相关文章

黑马程序员—OC点语法和成员变量作用域

一.点语法 1.OC中点语法是方便从事别的语言开发的程序员迅速的转到OC开发当中,先看下面这个例子: 1 // 声明一个Person类 2 @interface Person : NSObject 3 { 4 int _age; 5 NSString *_name; 6 } 7 - (void)setAge:(int)age; 8 - (int)age; 9 @end 10 11 // 实现Person类 12 @implementation Person 13 - (void)setAge:(

黑马程序员-oc对象的内存管理

oc没有java的垃圾回收机制,所以对象的内存释放很重要,基本数据类型,我们不用理会,编译器会处理: oc的每个对象内部都由一个计数器,用来记录当前有几个指针在指向该对象:当计数器为0时该对象会从内存中释放: 相关方法和概念: 1:retain:对象方法,调用该对象方法,计数器+1,有返回值,返回对象本身: 2:release:没有返回值,计数器-1: 3:retainCount:获取当前计数器的值: 4:dealloc:当对象被回收时,就会调用该方法,覆盖该方法时一定要调用[super dea

黑马程序员-OC对象的三大特性

OC语言是面向对象的语言,其三大特性必不可少. 一.封装是一个很重要的概念,它避免外界直接访问或修改对象的属性,可以过滤不合理的值,让外界不必关心内部的细节.通过set方法来让外部设置成员的属性值,通过get方法来获得对象属性值. 1 #import <Foundation/Foundation.h> 2 @interface Student : NSObject</span></span> 3 { 4 int _age; //以下划线开头,避免和局部变量弄混 5 in

黑马程序员 oc对象的行为和内存分析,匿名对象

#import <Foundation/Foundation.h> @interface Car : NSObject { @public int speed; int wheels; } // oc方法必须是-开头 // oc方法中所有的数据类型必须得用括号括起来 // oc方法中的()就是用来扩住数据类型的 -(void)run; @end @implementation Car - (void)run { NSLog(@"%d个轮子和速度为%d的车子跑起来了!");

黑马程序员-OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数

1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如下 // 声明 @interface  类名  (分类名称) @end // 实现 @implementation 类名 (分类名称) @end 2:分类的好处,当一个类比较庞大时,不同的部分可以放到不同的分类中,也方便团队中类的开发: 3:分类使用注意: a:分类不能增加成员变量,只能对原类增加方

黑马程序员-OC self super isa指针

self指针: self是oc面向对象设计中的一个特殊指针,相当于java中的this,但是比this强大,this只能访问实例对象的相关方法和成员变量,或者说this只代表实例对象: self不仅可以代表实例对象,还可以代表类对象:谁调用当前方法,self就代表谁:如果self用在了以"-"号的方法中,也就是对象方法中,那么就代表实例对象,若果在"+"号开头的方法中,self就代表类对象,因为只有类对象才能调用以"+"号开头的方法: self调

黑马程序员-OC面向对象继承关系和组合关系笔记

继承关系是描述类和类之间的关系,两个类分别称为子类和父类,子类继承了父类,子类就拥有了父类的属性和方法: 继承的关系特点描述出来就是:** "是" **  (例如:学生类 是 人类) 组合关系描述的语句是:**** "拥有" ***  (例如:学生有成绩这个属性,而成绩属性本来就是一个成绩类的对象 ) 继承示例代码: #import <Foundation/Foundation.h> //Animal类的声明 @interface Animal : NS

黑马程序员-OC的类的构造方法

构造方法:用来初始化对象的:首先分解一下创建对象的过程: Person *p = [Person new]; // new方法是alloc 和 init 这两个方法的组合: 完整的创建可用对象的过程: 1:分配存储空间:  就是调用的  +alloc 方法,这个方法是类方法,返回的是一个分配好存储空间的 对象: 2:初始化:-init 方法,对象方法,由alloc方法返回的对象调用init对对象进行初始化: 所以创建一个对象的规范和常用的方式:  Person *p = [[Person all

黑马程序员-OC学习笔记之NSString与NSMutableString

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.NSString与NSMutableString 相信大家对NSString类都不陌生,它是OC中提供的字符串类,它的对象中的字符串都是不可变的,而它的子类NSMutableString类的对象中的字符串就是可变的.什么是可变与不可变呢?二者的区别就是在已经创建的一个字符串对象中,在程序中能不能更改字符串,比如拼接新的字符串,可变的可以在原字符串中更改,