当前位置:网站首页>类(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);
}
}
结果:
边栏推荐
猜你喜欢
随机推荐
【代码源】每日一题 简单字段和
main函数的一些操作
sqli-labs Basic Challenges Less11-22
UI——无限轮播图和分栏控制器
TCP网络应用程序开发流程
Read and write mongodb database files
[GKCTF 2021]easynode
cf #785(div2) C. Palindrome Basis
Mongodb installation and use
变量名可以用中文?直接把人干蒙了
一文搞懂try、catch、finally(包含return)执行流程(全网最详细解析)
神经网络方法——美国波士顿房价(回归问题)
[De1CTF 2019]SSRF Me
¥1-2 例2.2 将两个集合的并集放到线性表中
【代码源】每日一题 添加括号
MySQL takes the query result as the data updated by update, and concatenates it after the original field data (Lej)
Redis数据库基础
@4-1 CCF 2020-06-1 线性分类器
Understand the execution process of try, catch and finally (including return) (the most detailed analysis of the whole network)
正奇边形可划分成多少区域


![[GKCTF 2021]easynode](/img/f0/1daf6f83fea66fdefd55608cbddac6.png)






