码迷,mamicode.com
首页 > 移动开发 > 详细

iOS学习第一天(Objective-C语言的类/继承)

时间:2015-08-02 00:54:30      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

在学习完c语言之后,今天开始了对OC语言的学习,今天主要学习的是对OC中的类进行说明和继承。

1、类的定义和使用

在文件夹上右击,选择New File...-Cocoa Class-输入类的名称-Creat。即可新建一个类。注意,选择要继承的类为NSObject

首先在所建立的.h文件中进行对类的声明部分,之后在.m文件中进行对类的实现部分。

对类声明部分的语法:

@interface 类的名字:父类的名字

{

  类的数据的定义

}

@end 

 

对类的实现部分的语法:

@implementation 类的名字

行为的实现

@end

 

如我们求1~100之和的函数中,.h文件中对类进行声明:

 

#import <Foundation/Foundation.h>

@interface LYSum : NSObject

{

    int n;

}

-(void)setN:(int)_n;

-(int)sum;

@end

 

.m文件中对类实现的部分:

#import "LYSum.h"

@implementation LYSum

-(void)setN:(int)_n

{

    n = _n;

}

 

-(int)sum

{

    int s=0;

    for(int i=0;i<=n;i++)

    {

        s+=i;

    }

    return s;

}

@end

 最后在main.m文件中对类的行为进行实现,main.m文件中的代码:

#import <Foundation/Foundation.h>

#import "LYSum.h"

 

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

    @autoreleasepool {

        LYSum * sum = [[LYSum alloc]init];//注意这里的固定用法

        [sum setN:100];

        int s = [sum sum];

        NSLog(@"%d",s);

        }

    return 0;

}

 

2、类的继承和init函数

在作图函数中LYShape.h文件对类进行的定义:

#import <Foundation/Foundation.h>

@interface LYShape : NSObject  //对NSObject进行继承

{

    int width;

    int height;

}

-(id)initWithWidth:(int)_width andWithHeight:(int)_height;  //定义一个新函数,使width和height能够在一个函数中出现

-(int)area;

@end

 

在LYShape.m文件中对两个函数进行说明部分:

#import "LYShape.h"

@implementation LYShape

- (id)init  //重写父类里的init

{

    self = [super init];

    if (self) {

        width = 0;

        height = 0;

    }

    return self;

}

-(id)initWithWidth:(int)_width andWithHeight:(int)_height  //初始化行为

{

    //必须去调用父类的初始化行为

    self = [super init];

    if(self)  //如果父类初始化成功

    {

            //初始化自己的数据

        width = _width;

        height = _height;

    }

    return self;

}

-(int)area

{

    return width*height;

}

@end

 

之后,LYCircle对LYShape进行继承,LYCircle.h中的代码:

#import "LYShape.h"

@interface LYCircle : LYShape  //对LYShape进行继承

-(id)initWithRad:(int)_rad;

-(double)area;

@end

 

LYCircle.m中的代码:

#import "LYCircle.h"

@implementation LYCircle

-(id)initWithRad:(int)_rad

{

    self = [super initWithWidth:_rad andWithHeight:_rad];  //使用super代表调用父类的函数

    return self;

}

 

-(double)area

{

    return 3.14*[super area];  //同理,需要调用父类函数来计算圆的面积

}

@end

 

最终,main.m中的代码:

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

    @autoreleasepool {

          //图形

        LYShape * s =[[LYShape alloc]initWithWidth:10 andWithHeight:20];

        NSLog(@"%d",[s area]);

      //圆形

        LYCircle * circle = [[LYCircle alloc]initWithRad:10];

        NSLog(@"%g",[circle area]);  //%g可以输出一个整数

   }

    return 0;

}

 

 第一天学习到的东西并不是很多,但是我们对于这个语言有了一个整体的认识,可以很快完成从C到OC的转换。

iOS学习第一天(Objective-C语言的类/继承)

标签:

原文地址:http://www.cnblogs.com/likaopu/p/4694879.html

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