最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

ios入门教程3:创建object-c面向对象的student类

IOS admin 浏览 评论

上一节ios开发入门教程我们学会了如何创建一个object-c的入门小程序hello world这一节我们将学习如何创建一个object-c面向对象的Student学生类,并在main函数中输出这个学生的年龄和编号。

通过本节的学习,我们将学会如何去定义一个object-c的类,并且学会如何使用get和set方法,以及学会如何定义多参数的方法,和object-c对象的创建与方法的调用。

1.我们在上一节hello项目的基础上再新建一个Student学生类,点击hello项目,右键选择“New File”,如图。

Image 1.png

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 <Foundation/Foundation.h>
@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 <Foundation/Foundation.h>
#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/2017/0130/49.html

    与本文相关的文章

    发表我的评论
    取消评论

    表情

    您的回复是我们的动力!

    • 昵称 (必填)

    网友最新评论