03-05、OC类中的对象方法:声明和实现以及调用02

1、如何在对象方法中访问该对象的属性?可以直接写上_属性名称即可。
2、 注意: OC中的NSLog对C语言的字符串支持不是很好, 如果打印的是中文的C语言字符串可能输出的是乱码, 也有可能什么都不输出。
3、 注意: OC中的方法如果有参数, 那么每个参数的数据类型前面必须加上一个:(冒号)
注意: 当前这个有参数的方法它的方法名称是 signal:
注意:冒号也是方法名称的一部分
4、有多个参数的对象方法的定义:所有数据类型都要用圆括号括起来,每一个参数的数据类型前面都要加上冒号。
5、为了提高我们的阅读性, OC方法允许我们给每个参数添加一个标签来说明当前参数的含义
注意: 标签也是方法名的一部分
方法名是 sendMessageWithNumber:andContent:

例如:- (int)sendMessageWithNumber:(int)number andContent:(char *)content;

=========================以下是代码========================

#import <Foundation/Foundation.h>

/*
 事物名称: iPhone
 属性: 颜色, 型号, cpu, 尺寸   == 成员变量
 行为:打电话, 发短信, 上网, 获取本机信息    == 成员方法
 */

// 1.编写类的声明
@interface Iphone : NSObject
{

@public
float _model; // 型号  0
int _cpu; // cup   0
double _size; // 尺寸  0
int _color; // 颜色  0
}
// 注意: OC中的方法, 如果没有形参不需要写(), 而是直接写一个;
// 为什么OC中没有形参不需要写()呢? 因为OC方法中的()有特殊的用途, OC方法中的()是用来扩住数据类型的
- (void)about;
/*
 C语言的函数:
 没有返回值没有参数的
 有返回值没有参数的
 有返回值有参数的
 没有返回值有参数的 
 */

// 有返回值没有参数的, 读取短信
- (char *)loadMessage;

// 有返回值有参数的, 打电话
// int signal(int number);
// 注意: OC中的方法如果有参数, 那么每个参数的数据类型前面必须加上一个:
// 注意: 当前这个有参数的方法它的方法名称是  signal:
//       冒号也是方法名称的一部分
- (int)signal:(int)number;

// 有返回值并且有多个参数的, 发短信
// int sendMessage(int number, char *content);
// 下面这个方法的方法名称是 sendMessage::
//- (int)sendMessage:(int)number :(char *)content;

// 为了提高我们的阅读性, OC方法允许我们给每个参数添加一个标签来说明当前参数的含义
// 注意: 标签也是方法名的一部分
// 方法名是 sendMessageWithNumber:andContent:
- (int)sendMessageWithNumber:(int)number andContent:(char *)content;

@end

// 2.编写类的实现
@implementation Iphone

// 行为的实现
- (void)about
{
// 如果在对象方法中想访问该对象的属性, 可以直接写上_属性名称即可
//    NSLog(@"打印本机信息");
NSLog(@"型号 = %f, cpu = %i, 尺寸= %f, 颜色 = %i", _model, _cpu, _size, _color);
}
- (char *)loadMessage
{
char *content = "老婆我们家我做主";
return content;
//    return "wife is god";
}

- (int)signal:(int)number
{
NSLog(@"打电话给%i", number);
return 1;
}

//- (int)sendMessage:(int)number :(char *)content
- (int)sendMessageWithNumber:(int)number andContent:(char *)content
{
NSLog(@"发短信给%i, 内容是%s", number, content);
return 1;
}
@end

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

// 1.通过类创建对象
Iphone *p = [Iphone new];
// 2.修改对象的属性
p->_size = 3.5;
p->_color = 0;
p->_model = 4;
p->_cpu = 1;

// 3.获取对象的属性
//    NSLog(@"size = %f, color = %i, model = %f, cpu = %i", p->_size, p->_color, p->_model, p->_cpu);

// 4.如果给对象发消息(如果调用对象的方法)
[p  about];

//    [对象 消息名称(方法名称)]
// 注意: OC中的NSLog对C语言的字符串支持不是很好, 如果返回的是中文的C语言字符串可能输出的是乱码, 也有可能什么都不输出
char *content = [p loadMessage];
NSLog(@"content = %s", content);

[p signal:13838338];
//    [p sendMessage:1383838333 :"luck"];
[p sendMessageWithNumber:123456789 andContent:"hi"];


return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容