码迷,mamicode.com
首页 > 其他好文 > 详细

黑马程序员--oc 类的声明和实现

时间:2015-03-31 22:10:42      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

类的声明和实现

类的声明

#import<Foundation/Foundation.h> 

 

//NSObject让类具有创建对象的能力,同样包含在Foundation框架中

@interface类名 : NSObject

{//@public 可以让外部指针间接访问对象内部成员变量

@public

成员变量;

成员变量;

}

//方法(行为):方法名参数返回值(声明和实现)

//只要是OC对象的方法必须以 - 开头 OC方法中的任何数据类型必须用()括住,且只能括住数据类型不能乱写

方法声明;

方法声明;

@end

  

 

@implementation类名

实现@interface中声明的方法

@end

 

int main()

{

//利用类创建对象

//oc中想执行行为,写[]  [行为执行者行为名称]

//定义一个指针变量将来指向定义类型的对象,oc中只能利用指针变量间接操纵对象

//通过[类名 new]指令创建新对象并且会反悔新对象本身(新对象地址)

类名 *p=[类名 new];

 

    p->成员变量=4;//给p指针指向的成员变量赋值

}

 

 

方法和函数的区别

方法

 1.对象方法都是以减号 -

 2.对象方法的声明必须写在@interface和@end之间

对象方法的实现必须写在@implementation和@end之间

 3.对象方法只能由对象来调用

 4.对象方法归类\对象所有

 

函数

 1.函数能写在文件中的任意位置(@interface和@end之间除外),函数归文件所有

 2.函数调用不依赖于对象

 3.函数内部不能直接通过成员变量名访问某个对象的成员变量

@interface和@implementation的分工

                       

  @interface就好像暴露在外面的时钟表面

 @implementation就好像隐藏在时钟内部的构造实现

常见错误

  1. 不能彼此嵌套
  2. 声明必须在实现上面
  3. 新类必须卸载外面
  4. 只有有对象才有成员变量,不能直接对未定义变量的成员变量赋值
  5. interface里声明不允许赋值,成员变量不能重复

  不能随便将成员变量当成C语言中的变量使用(不能用static修饰)

  6.声明放在main()函数前,不能放在放在后面,否则会报未定义的错误。实现可以放在main函数外面

 

 

 语法细节

成员变量不能在{}中进行初始化、不能被直接拿出去访问

方法不能当做函数一样调用

成员变量\方法不能用static等关键字修饰,别跟C语言混在一起(暂时忽略)

类的实现可用写在main函数的后面,主要在声明前面就行了

  

/*

人

类名:Person

属性(成员变量\实例变量):体重、年龄

行为(方法):走路、吃

 */

#import<Foundation/Foundation.h>

/*

 1.类的声明

    * 成员变量

    * 方法的声明

 */

@interface Person : NSObject

{

@public

int age;

double weight;

}

 

- (void)walk;

- (void)eat;

 

@end

 

 

// 2.类的实现

@implementation Person

 

// 实现@interface中声明的方法

- (void)walk

{

NSLog(@"%d岁、%f公斤的人走了一段路", age, weight);

}

 

- (void)eat

{

NSLog(@"%d岁、%f公斤的人在吃东西", age, weight);

}

 

@end

 

int main()

{

// 在使用类创建对象之前,会将类加载进内存

    Person *p = [Person new];

p->age = 20;

p->weight = 40;

 

    [p eat];

    [p walk];

 

    Person *p2 = [Person new];

p2->age = 30;

p2->weight = 60;

    [p2 eat];

    [p2 walk];

return0;

}

 

黑马程序员--oc 类的声明和实现

标签:

原文地址:http://www.cnblogs.com/lxiaohei103/p/4382069.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!