黑马程序员 成员变量的作用域,property,id,构造方法,点语法

#import <Foundation/Foundation.h>

@interface Person : NSObject

{

/*

成员变量作用域有四种:

[email protected]:能在程序中任何地方直接访问成员变量

[email protected]:能在当前类和子类中直接访问成员变量(默认情况下)

[email protected]:只能在当前类中直接访问成员变量(@property)

[email protected]:在同一框架中能直接访问成员变量

*/

@provate

int _age;

@protect

int _height;

@public

double _weight;

}

/*

@property语句的作用是自动生成setter和getter方法,自动生成_age(private),如果程序上有_age成员变量,就不会生成。同理如果程序上已经有了setter或getter方法,也不会生成,但如果系统上有了setter和getter方法,即使没有成员变量,也不会再自动生成

*/

@property int age;

@property int height;

@end

@implementation Person

// 构造方法是指初始化(init)对象的方法,通过重写init方法,可以使成员变量初始化不为0

- (void)init

{

if(self = [super init])

{

_age = 10;

}

return self;

}

@end

int main()

{

// id是万能指针,指向任意对象,它相当于NSObject
*。因为id本身包括*,所以使用id时不要再加上*,以下的id指向person对象

id p = [Person new];

// 因为weight是@public,所以它可以在程序的任意地方直接访问成员变量

p ->weight = 61.5;

// p.height是点语法相当于[p
setHeight:173],因为_height是@protect,在main中不能直接访问,所以用setter方法

p.height = 173;

//  p.age是点语法相当于[p
setHeight:173],因为_age是@provate,在main中不能直接访问,所以用setter方法

p.age = 25;

/*

new方法包含两个步骤,一个步骤是alloc方法,一个步骤是init方法

1.第一个步骤+alloc方法,分配存储空间,返回内存地址,返回一个不可用的对象

2.第二个步骤-init方法,使不可用的对象初始化,返回一个初始化的对象

*/

// id p1 = [Person new];

id p1 = [[Person alloc] init];

// 通过结果可以知道age成员变量初始值不为0

NSLog(@"%d"p.age);

return 0;

}

时间: 2024-10-09 08:36:19

黑马程序员 成员变量的作用域,property,id,构造方法,点语法的相关文章

黑马程序员----成员变量的作用域(作用范围)

成员变量的作用域 成员变量的作用域共分为4种: @private :只能在当前类的实现(@implementation)中直接访问,即当前类的对象方法中访问. @protected : 可以在当前类以及其子类的实现(@implementation)中直接访问,默认. @public : 任意地方都可以直接访问. @package : 同一个“体系”(框架)内可以直接访问,介于@private和@public之间. 注意点:

黑马程序员_OC学习笔记之@property和@synthesize

[objc] view plaincopyprint? <span style="font-size:24px;">#import <Foundation/Foundation.h> @interface Person : NSObject { int _age; int age; int _height; int height; int _weight; int weight; int _money; int money; } @property int ag

黑马程序员_Objective C中的@property 与 @synthesize 快速生成setter getter方法

<a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>.<a href="http://www.itheima.com"target="blank">.Net培训</a>.期待与您交流! 一般来说在一个类中 成员变量是会有setter 跟getter方法的. 如果每一个成员变量的setter 跟gett

黑马程序员_JavaScript变量转换和Jquery对象的转换

在实际编程过程中,有很多对字符串进行判断.拆分.比较.转换类型.校验等操作,下面我会总结下JavaScript变量转换和Jquery对象的转换. 1.JavaScript 变量转换及字符串操作 1.字符串变成int类型 使用函数:parseInt(); 使用此函数,可将string类型变量转换为int类型.而且只能够对string类型变量使用.如果待转换string类型变量无发转换为int类型时,函数会返回NaN. 实例如下: var v_Num = parseInt('256ok'); //

黑马程序员- oc中点语法和@property的使用

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 点语法 其实就是set方法和get方法 #import<Foundation/Foundation.h> @interface Person : NSObject { int _age; } - (void)setAge:(int)age; - (int)age; @end @implementation Person - (void)setAge:(int)age { _age = age

黑马程序员_JavaSE学习总结第02天_Java基础语法

------- android培训.java培训.期待与您交流! ----------  02.01 关键字的概述和使用 关键字概述:被Java语言赋予特定含义的单词 关键字特点:组成关键字的字母全部小写 关键字注意事项:goto和const作为保留字存在,目前并不使用,类似Notepad++这样的高级记事本,针对关键字有特殊的颜色标记,非常直观 保留字:在JDK的新版本中可能提升为关键字 02.02 标识符的概述和组成规则 标识符概述:就是给类,接口,方法,变量等起名字时使用的字符序列 组成规

黑马程序员——c语言学习—作用域详解

-----------Java培训.Android培训.IOS培训..Net培训.期待与您交流!------------ 本节我们系统学习一下c语言中的变量类型及作用域. 1.全局变量 全局变量是在从定义开始,到整个程序结束都存在的变量,他是在所有函数体的外面定义的变量,存储在静态存储区,所有的代码都可以访问,定义如下: #include <stdio.h> int a; // 定义全局变量 int main() { a = 10; // 函数内可以访问 return 0; } 需要注意的是,

黑马程序员----内存管理之三——《@property的内存管理》

内存管理之三——<@property的内存管理> 1.@property中与setter内存管理相关的参数 retain : release旧值,retain新值(适用于OC对象类型): assign : 直接赋值,(默认,适用于非OC对象类型): copy  : release旧值,copy新值: 2.@property中是否生成setter的参数 readonly  : 只会生成getter的声明和实现: readwrite : 同时生成setter和getter的声明和实现: 3.@pr

黑马程序员_JavaSE学习总结第04天_Java基础语法3

------- android培训.java培训.期待与您交流! ----------  04.01 选择结构switch语句的格式及其解释 switch语句的格式: switch(表达式) {    case 值1:语句体1;break;    case 值2:语句体2;break;    ......    default:语句体n+1;break; } 格式解释: switch表示这是switch语句 表达式的取值:byte,short,int,char,JDK5以后可以是枚举类型,JDK