博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Objective-C面向对象之实现类
阅读量:6331 次
发布时间:2019-06-22

本文共 1902 字,大约阅读时间需要 6 分钟。

一般涉及到面向对象都会C#,Java都不可避免的涉及到类,C#中类的后缀名是.cs,Java中是.java,Object-C中一般用两个文件描述一个类,后缀名为.h为类的声明文件,用于声明成员变量和方法,.m文件主要用于实现声明中的方法,Java和C#声明类用的是Class关键字,OC声明类用的字@interface和@end,实现类用的是@implementation和@end,跟其他的有点不同,方法定义,方法调用都不太一样,具体一点点的看吧:

新建Cocoa Class:

语言选择OC,类名Book:

Book.h中的代码:

1
2
3
4
5
6
7
8
9
10
11
#import <Foundation/Foundation.h>
 
@interface 
Book : 
NSObject
{
    
NSString 
*_author;
    
NSString 
*_publishDate;
}
@property 
int 
Number;
- (
void
)getDetial;
 
@end

 Book.m中的代码:

1
2
3
4
5
6
7
8
9
#import "Book.h"
 
@implementation 
Book
@synthesize 
Number;
-(
void
)getDetial
{
    
NSLog
(@
"论程序员的职业素养"
);
}
@end

 main函数中的调用:

1
2
3
4
Book *book=[Book 
new
];
[book getDetial];
book.Number=100;
NSLog
(@
"图书的数量为:%d"
,book.Number);

这里的代码暂时先不分析,看下另外一段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
typedef 
enum 
{
    
man,
    
woman
} Sex;
 
@interface 
Person : 
NSObject
{
    
@public
    
NSString 
*Name;
    
NSString 
*School;
    
Sex sex;
    
int 
Age;
}
- (
void
)say;
- (
int
)sum:(
int
)numA secondNumber:(
int
)numB;
 
@end
 
@implementation 
Person
- (
void
)say
{
    
NSLog
(@
"多说多错,少说少错"
);
}
-(
int
)sum:(
int
)numA secondNumber:(
int
)numB
{
    
return 
numA+numB;
}
@end

  main函数中的调用,具体代码如下:

1
2
3
4
5
6
7
8
9
Person *person=[Person 
new
];
    
person->Age=25;
    
person->sex=man;
     
 
    
NSLog
(@
"年龄:%d,性别为:%@"
,person->Age,@
"测试"
);
    
[person say];
    
int 
b=[person sum:10 secondNumber:10];
    
NSLog
(@
"两个数字相加的和是:%d"
,b);

 类中的成员变量都是在{}中的,如果初始化类的时候想要调用的话直接使用->符号进行访问,前提是变量的作用域可以访问,一般来说作用范围是@public,@protected,@private,如果接触过其他语言,public都可以访问,protected是父类和子类都可以访问,private是类本身中才可以访问。

C#通过操作属性来保护字段,OC中也可以,所以第一段代码就出现了@property和@synthesize;

方法定义+表示类方法也就是静态方法,-是对象方法:

1
-(
int
)sum:(
int
)numA secondNumber:(
int
)numB

 int 是返回值类型,方法后面跟一个函数就是:(类型)名称,如果是多个就空格之后重复,跟上面一样,很好理解;new其他语言中用的很多,不过一般新建一个对象的形式是:

1
Person *person=[[Person alloc] init];

行笔匆匆,难免遗漏,如有不当,多多指教,先行谢过~  

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4214945.html,如需转载请自行联系原作者

你可能感兴趣的文章
win10下安装TensorFlow(CPU only)
查看>>
进程间通信的方式——信号、管道、消息队列、共享内存
查看>>
Potala(3)——Transaction
查看>>
cocos 锚点、包围盒
查看>>
RAM建模和初始化
查看>>
sql server 2008学习3 表组织和索引组织
查看>>
away3d 4.1 环境反射总结
查看>>
超越halcon速度的二值图像的腐蚀和膨胀,实现目前最快的半径相关类算法(附核心源码)。...
查看>>
MySql 修改列的注释信息的方法
查看>>
养成代码注释习惯,帮助你更好使用NetBeans导航器
查看>>
通过xmanager连接Centos的远程桌面
查看>>
Python logging 模块
查看>>
Spring系列(三):Spring IoC中各个注解的理解和使用
查看>>
JS基础
查看>>
urllib模块
查看>>
unidac 执行Execute后取得受影响行数。
查看>>
C#中的集合类——HashTable
查看>>
如何使用Nexus搭建Maven私服
查看>>
AC日记——Dining poj 3281
查看>>
AC日记——[ZJOI2009]狼和羊的故事 bzoj 1412
查看>>