【ObjectiveC】02.第一个OC语言类

02.第一个OC语言类

在java语言中,创建一个类只需要一个文件,而在oc语言中,创建一个类需要两个文件.m文件和.h文件。

.h文件是声明类,用来声明成员变量和方法。用关键词@interface来修饰,以@end结尾。

.m文件是实现类,用来实现成员变量和方法,用关键词@implementation来修饰,以@end结尾。

方法:在oc语言中方法都需要用+或-来表明方法的类型。

+表示的是静态方法。

-表示的是动态方法。

.h文件中的所有方法都是public,不能更改。

成员变量:成员变量按作用域不同可以划分为:public   protected   private

所有的类最后都会继承NSobject.

 

Student.h文件

#Import <foundation/foundation.h>    //该student类继承NSobject类,因此需要引用foundation框架下的foundation.h文件。

@interface student :NSobject {        //声明student类然后继承自NSobject类。将成员变量放在{}当中

Int age;                                         //一般会将成员变量的声明放在头文件当中,age的

Int height;

 

@public                                       //声明不同类型的成员变量

Int weight;

}

@end

 

Student.m文件

#import“student.h”                           //必须引用该类的头文件,否则无法实现声明,就假设头文件是名字,工程文件是身体,没有名字就没有身体。

@implementation student{                 //实现student类

 

}

@end

 

添加方法

为了保持面向对象的封装性,在java语言中,get方法和set方法都要用到getname和setname。在oc中,get方法需要用到与原名字同名的方法,例如age方法可以用age函数来获取age变量。

#import <foundation/foundation.h>

@interface student:NSobject{

Int age;

Int height;

}                                                                                           //{}起始终止与成员变量

-(int)age;                                                                         //age的get方法,返回值类型用(int)表示

-(void)setage:(int)Newage;                                                 //无返回值,参数用:引出(int)为参数数据类型,形参名称为newage.返回值或者参数的类型都要用()包住。

- (void)setage:(int)Newage andheight(int)Newheight;            //在oc中一个:对应一个参数,而且:也是方法名的一部分,因此方法名是setage:

-(void)setage:(int)Newage andheight:(int)height;            // 增加一个方法可以同时操作age和height

 //方法名是setage:andheight:动态方法,无返回值,有两个参数,andheight可以省略。方法名可以是(void)setage:(int)Newage:(int)height;

 

在student.m中的实现方法

#import “student.h”

@implementation student

 

-(int)age{

 Return age;

}

 

-(void)setage:(int)newAge{

 Age=newAge;

}

 

@end

Student.h和student.m都有了,这个student类就完成了,接下来就要用student类来创建一个实例。

 

@Import <foundation/foundation.h>

@import student.h

 

int main(int argc, const char * argv[]){                 //在oc语言中,所有的对象存储类型都是指针,即开辟一块内存空间,然后存入相应的类型数据,然后用指针指向。

@autoreleasepool{

   Student *stu=[[student alloc]init];                   //在oc语言中,[调用方法的主体 方法名]就可以调用方法了。在oc中创建对象,首先需要要用创建对象的类开辟一块内存空间,然后对类进行初始化,这样对象才可以使用。

  [stu release];//对象销毁

}

Return 0;

}

Student stu=[student alloc];                             //用student类型开辟了一段内存空间,并创建stu指针来指向这片内存空间。刚创建的内存空间没有经过初始化时无法使用的,必须初始化之后才能使用。

Stu=[Stu init];                                              //将stu指针指向的那片内存空间初始化,并将初始化后的stu地址返回给指针。静态变量可以由类来调用。动态变量可以用对象来调用。

因此在oc语言中调用方法实际上需要【调用方法主体 方法名】

销毁对象,在方法调用结束之后,需要手动销毁对象。

前面的stu调用了alloc和init等一些其他的方法,这些方法并不是因为调用了foundation.h文件,而是因为student的父类是NSobject,所以可以调用这些方法。

 

在创立了student类的stu对象,如何调用这些方法和成员变量。

 1 import <Foundation/Foundation.h>

 2 #import "Student.h"

 3

 4 int main(int argc, const char * argv[])

 5 {

 6     @autoreleasepool {

 7         Student *stu = [[Student alloc] init];

Stu->age=18; //只有成员变量是public的可以用指针的形式直接访问。

[Stu setage:18];//受保护的成员变量可以通过set方法来调用。

Int newage=[stu->age];

Int newage=[stu age];

原文地址:https://www.cnblogs.com/lands/p/4718291.html