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

类的声明和实现

类的声明

#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;

}
时间: 2024-10-13 00:28:45

黑马程序员--oc 类的声明和实现的相关文章

黑马程序员--oc 类的封装 继承 和多态

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 成员变量的命名规范: 成员变量名要以 _开头 作用: 1.可以让成员变量和get方法的名称区分开 2.可以和局部变量区分开,一看到以_开头的变量一般都是成员变量 封装: 在定义成员变量时,尽量不要用@public 这种写法 ,而是使用set方法和get方法 @interface Student : NSObject { int _age; } /* set方法: 作用:提供一个方法给外界设置成

黑马程序员-OC类的本质,深入探讨,load方法和initialize方法

1:类的本质:类也是一种类,可以叫做类类,类对象,类类型: 2:类和对象在内存中分配问题(注意区分类的对象和类对象的概念) 类对象在内存中只有一份,且只加载一次,类对象中存放了类中定义的方法: 而成员变量和isa指针,存放在了类的对象中;isa指针指向了类对象:如图: 3:类本身也是对象,是class类型的对象: // 以person为例 Person *p1 = [[Person alloc] init]; Person *p1 = [[Person alloc] init]; // 获取类对

黑马程序员——oc语言学习心得—— 属性声明和赋值

黑马程序员——oc语言学习心得—— 属性声明和赋值 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,在oc中所有类继承与终极父类Object2,声明字符变量采用N是string  *_xxx 实例变量一般以下划线开头3,在oc中方法以+ -号区分 -号开头是实例方法或对象方法  +号开头是类方法  前置用对象调用 后者用类名调用4,在xcode4以后声明@property 不用在写@snysize  自动生成get.set方法5,属性

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

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

黑马程序员——OC有参函数声明以及调用

黑马程序员——OC有参函数声明以及调用 ------- android培训.ios培训.期待与您交流! ---------- 1 //没有参数有返回值方法的声明实现及调用 2 3 //有参数有返回值方法的声明实现及调用 4 5 #import <Foundation/Foundation.h> 6 7 @interface cacu:NSObject 8 9 { 10 11 //实例变量 12 13 @public; 14 15 int _num1; 16 17 int _num2; 18 1

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

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

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

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

黑马程序员-OC学习笔记之autorelease与自动释放池

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.autorelease autorelease与release相似,是OC中的一个对象方法.这两个方法都能把对象的引用计数器减1,但是release是一个精确的减1,对对象的操作只能在release之前进行,如果是在之后,就会出现野指针错误:而autorelease是一个不精确的引用计数器减1,当给对象发送autorelease消息时,对象就会被放到自动

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

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