上一节ios开发入门教程我们学会了如何创建一个object-c的入门小程序object-c面向对象的Student学生类,并在main函数中输出这个学生的年龄和编号。
通过本节的学习,我们将学会如何去定义一个object-c的类,并且学会如何使用get和set方法,以及学会如何定义多参数的方法,和object-c对象的创建与方法的调用。
1.我们在上一节hello项目的基础上再新建一个Student学生类,点击hello项目,右键选择“New File”,如图。
2.在弹出的对话框中选择Cocoa class图标,点击next,弹出对话框,输入class类的名称如Student,选择Language语言为Object-c开发语言,如图。
3.点击next之后就会弹出文件保存位置,默认的就可以,点击create按钮完成了Student类的创建,这个时候就会生成两个文件,一个Student.h,另一个是Student.m文件,前者是类的申明(java中叫接口)文件,申明文件不能写方法体,后者是类的实现,用于实现申明中的方法,如图。
解释一:我们在Student.h申明文件中定义Student学生类的年龄age和编号no属性,并且申明get和set方法,get方法有返回值类型int,set没有返回值,所以为void,代码如下。//导入ios开发语言object-c框架
#import
@interface Student: NSObject{
//年龄属性
int age;
//编号属性
int no;
}
//年龄get方法申明,返回int类型
-(int)age;
//编号get方法申明,返回int类型
-(int)no;
//年龄set方法申明,传入一个参数为newAge
-(void)setAge:(int)newAge;
//编号set方法申明,传入一个参数为newNo
-(void)setNo:(int)newNo;
//多参数方法的申明,同时设置年龄和编号
-(void)setAge:(int)newAge andNo:(int)newNo;
@end
解释一下上面的代码,@interface是定义一个类的关键字,Student为类名,NSObject为父类@interface Student: NSObject
这段话的整条意思就是定义student学生类,并且这个类继承NSObject,冒号“:”在这里是继承的意思,在方法中“:”后面代表的是参数,要知道,object-c语言中所有的类都是必须要继承NSObject的,学生类的属性比如说年龄和编号需要用大括号括起来“{}”,类的方法需要写在@end结束关键字里面。
解释二:Student.m文件,叫类方法的实现文件,主要用来写实现Student.h中申明的get和set等方法的逻辑,代码如下。//实现Student.h中的方法必须要导入Student.h这个类文件
#import "Student.h"
@implementation Student
//年龄get方法实现
-(int)age{
return age;
}
//年龄set方法实现,
-(void)setAge:(int)newAge{
age = newAge;
}
//编号get方法实现
-(int)no{
return no;
}
//编号set方法实现
-(void)setNo:(int)newNo{
no = newNo;
}
//实现同时设置年龄和编号的方法
-(void)setAge:(int)newAge andNo:(int)newNo{
age = newAge;
no = newNo;
}
@end
@implementation这个是类的实现关键字,如果Student.m想要实现Student.h中定义的申明,必须要使用此关键字。
还有一点要注意的是object-c方法有两种,一种是静态方法(类方法),方法前面用“+”加号表示,可以直接用类名调用。另一种方法是实例方法,用“-”减号表示,必须要创建类的对象才能调用。
object-c面向对象类我们已经创建好了,这个时候我们需要在一个程序中使用我们刚刚定义的方法,代码如下。#import
#import "Student.h"
int main(int argc, const char *argv[]){
@autoreleasepool {
//分配内存
//Student *stu = [Student alloc];
//初始化对象
//stu = [stu init];
//以上的两个步骤可以简写成这样
Student * stu = [[Student alloc] init];
//对象调用set方法设置年龄
//[stu setAge:20];
//对象调用get方法,返回年龄的int类型
//int age = [stu age];
//NSLog(@"输出值为:%d",age);
//对象调用多参数的方法,同时设置年龄和编号
[stu setAge:20 andNo:2];
NSLog(@"年龄为:%d,编号为:%d",[stu age],[stu no]);
return 0;
}
}
以上的代码输出结果为年龄为:100,编号为:2
由于object-c需要手动给对象分配内存,因此在创建之前要用静态方法alloc给对象在内存中分配一个位置,然后用静态方法init初始化对象,这个时候我们就可以使用对象的set和get方法了。
“[]”中括号是固定格式,用于方法的调用,为什么Student.h中没有定义alloc和init方法而可以直接使用alloc和init方法呢?这是由于我们前面的Student.h类中继承了NSObject这个类,而这个类里面就定义了静态方法alloc和init,所以我们的子类就可以直接使用这两个方法。
object-c面向对象类的定义和方法的使用我们就圆满完成了,请记住,一定要多练习,而不是仅仅只是看看。
来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/object-c_ios/49.html