ios学习第三天(二)自己动手写一个类

本文详细介绍了Objective-C中类的定义与使用方法,包括类的声明与实现过程,并通过Pig类的具体实例展示了如何定义类的属性与方法、初始化方法及重写父类方法等关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了看这一块内容,画了不少时间,语法不学不写永远不会的。

OC中的类要写在两个文件中.h文件是声名文件.m文件是实现文件。


类的声名:

#import <Foundation/Foundation.h>

@interface 类名: 继承的类名<协议名1,协议名2>{  //或@interface 类名: 继承的类名{
    //这里声明属性
}

//这里声明方法

@end


类的实现:

#import "类的声名文件"  //如:#import "Dog.h"

@implementation 类名

//这里写要实现的方法

@end


看例子,去感悟吧:


Pig.h:

//
//  Pig.h
//  ClassTest
//
//  Created by Moluth on 17/4/7.
//  Copyright (c) 2017年 Moluth. All rights reserved.
//

#import <Foundation/Foundation.h>

//.h文件用于声明一个类 Pig类名 冒号表示继承 Pig继承自NSObject
@interface Pig : NSObject{
    //这里声明属性
    int _age;//属性
    NSString *_name;
}

//这里声明方法
-(id)initWithNameAndAge:(NSString*)name : (int)age;//带参数构造方法
-(int)age;//getAge 无参数方法,int返回值
-(NSString*)name;//getName
-(void)setAge:(int)age;
-(void)setName:(NSString*)name;//单参数空返回值方法
-(void)setNameAndAge:(NSString*)name : (int)age;//双参数空返回值方法

@end



Pig.m:

//
//  Pig.m
//  ClassTest
//
//  Created by Moluth on 17/4/7.
//  Copyright (c) 2017年 Moluth. All rights reserved.
//

#import "Pig.h"

//.m文件为实现文件 实现Pig类

@implementation Pig

//构造方法
-(id)initWithNameAndAge:(NSString*)name : (int)age{
    self=[super init];//调用父类构造方法 self相当于java中的this
    _name=name;
    _age=age;
    return self;
}

-(int)age{
    return _age;
}

-(NSString*)name{
    return _name;
}

-(void)setAge:(int)age{
    _age=age;
}
-(void)setName:(NSString*)name{
    _name=name;
}
-(void)setNameAndAge:(NSString*)name : (int)age{
    _age=age;
    _name=name;
}
//重写父类该方法,在输出该对象时,会输出下面的字符串。
-(NSString*)description{
    return [[NSString alloc] initWithFormat:@"[name:%@,age:%d]",_name,_age];
}

@end


main.m:

//
//  main.m
//  ClassTest
//
//  Created by Moluth on 17/4/7.
//  Copyright (c) 2017年 Moluth. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "pig.h"

int main(int argc, const char * argv[]) {
    Pig *pig1=[[Pig alloc] init];
    [pig1 setNameAndAge:@"熊大" :10];
    NSLog(@"name=%@  age=%d  obj=%@",[pig1 name],[pig1 age] ,pig1);//name=熊大  age=10  obj=[name:熊大,age:10]
    
    Pig *pig2=[[Pig alloc] initWithNameAndAge:@"光头强" :38];
    NSLog(@"%@",pig2);//[name:光头强,age:38]
    
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值