当前位置:网站首页>类(2) 和 协议

类(2) 和 协议

2022-07-25 09:21:00 山河丘壑

系列文章目录

第一章 OC之单例模式
第二章 OC之对象初始化
第三章 OC之类的创建和协议
第四章 OC之main函数的操作和基础概念

前言

本篇介绍类的创建和协议


一、类

什么是类?

类是面向对象的重要内容,我们可以把类当作一种自定义数据。
可以使用类来定义变量。这种类型的变量相等于指针类型的变量;

定义类

接口部分:定义该类包含的成员变量和方法
实现部分:为类的方法提供实现

类的接口:
在这里插入图片描述
类的实现:
在这里插入图片描述

二、协议

协议的定义类似于接口,用于定义多个类应遵守的规范
协议不提供任何实现

协议的一些定义

三、新建一个XiyouMobilePerson类

User类的接口:

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface User : NSObject
@property(nonatomic,copy) NSString*name;
@property(nonatomic,assign) int age;

@end

NS_ASSUME_NONNULL_END

User类的实现:

#import "User.h"

@implementation User
@synthesize name;
@synthesize age;
@end

类的接口

#import <Foundation/Foundation.h>
#import"User.h"
NS_ASSUME_NONNULL_BEGIN

@interface XiyouMobilePerson : User{
    
    int iOS;
    int web;
    NSString* andriod;
    NSString* server;
}
-(void)setiOS:(int)i;
-(void)setWeb:(int)w;
-(void)setAndriod:(NSString*)a;
-(void)setServer:(NSString*)s;
-(int)getiOS;
-(int)getWeb;
-(NSString*)getAndriod;
-(NSString*)getServer;
@end

NS_ASSUME_NONNULL_END

类的实现:

#import "XiyouMobilePerson.h"

@implementation XiyouMobilePerson
-(void)setiOS:(int)i{
    
    if(i%2==1){
    
        i = i + 1;
    } else{
    
        i = i - 1;
    }
    iOS = i;
}
-(void)setWeb:(int)w{
    
    web = w;
}
-(void)setServer:(NSString*)s{
    
    server = s;
}
-(void)setAndriod:(NSString *)a{
    
    andriod = a;
}
-(int)getiOS{
    
    return iOS;
}
-(int)getWeb{
    
    return web;
}
-(NSString*)getServer{
    
    return server;
}
-(NSString*)getAndriod{
    
    return andriod;
}
@end

测试:

#import"User.h"
#import"XiyouMobilePerson.h"
#import<Foundation/Foundation.h>
int main() {
    
    @autoreleasepool {
    
        XiyouMobilePerson* p = [[XiyouMobilePerson alloc]init];
        [p setiOS:99];
        [p setWeb:98];
        [p setServer:@"97"];
        [p setAndriod:@"96"];
        NSLog(@"setiOS = %d,setWeb = %d,setServer = %@,setAndroid = %@",[p getiOS],[p getWeb],[p getServer],[p getAndriod]);
    }
}

结果:
在这里插入图片描述

四、新建一个Model类

类的接口:

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface Model : NSObject
@property(nonatomic, stong) NSMutableArray* XiyouMobileArrey;
@end

NS_ASSUME_NONNULL_END

类的实现:

#import "Model.h"

@implementation Model
@synthesize XiyouMobileArrey;
@end

测试:

#import"User.h"
#import"Model.h"
#import<Foundation/Foundation.h>
int main () {
    
    @autoreleasepool {
    
        Model* m = [[Model alloc]init];
        m = @"iOS";
        NSLog(@"%@",m);
        
    }
}

结果如下:
在这里插入图片描述

五、新建一个Demand协议

Demand.h

// Demand.h
// gy-OC.5.29
//
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN
@protocol  Demand <NSObject>
@required
-(int)calculate;
@optional
-(int)unnessary;
@end

NS_ASSUME_NONNULL_END

XiiyouMobilePerson.m

#import "XiyouMobilePerson.h"
#import"Demand.h"
@implementation XiyouMobilePerson
-(void)setiOS:(int)i{
    
    if(i%2==1){
    
        i = i + 1;
    } else{
    
        i = i - 1;
    }
    iOS = i;
}
-(void)setWeb:(int)w{
    
    web = w;
}
-(void)setServer:(NSString*)s{
    
    server = s;
}
-(void)setAndriod:(NSString *)a{
    
    andriod = a;
}
-(int)getiOS{
    
    return iOS;
}
-(int)getWeb{
    
    return web;
}
-(NSString*)getServer{
    
    return server;
}
-(NSString*)getAndriod{
    
    return andriod;
}
-(int)calculate{
    
    return iOS + web;
}
@end

测试:

#import"XiyouMobilePerson.h"
#import"Demand.h"
#import<Foundation/Foundation.h>
int main(){
    
    @autoreleasepool {
    
        XiyouMobilePerson* p = [[XiyouMobilePerson alloc]init];
        [p setiOS:99];
        [p setWeb:98];
        [p setServer:@"97"];
        [p setAndriod:@"96"];
        int a =[p calculate];
        NSLog(@"iOS + web = %d",a);
    }
}

结果:
在这里插入图片描述

原网站

版权声明
本文为[山河丘壑]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_61196797/article/details/125284887