黑马程序员-iOS学习日记(三)面向对象-方法

本文详细介绍了Objective-C中的方法声明、实现和调用过程,并对比了方法与函数的区别,同时还讲解了类方法与对象方法的不同之处。

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

---------------------- <a href="http://www.itheima.com"target="blank">iOS开发</a>、<a href="http://www.itheima.com"target="blank">iOS培训</a>、期待与您交流! ----------------------


一、方法的声明、实现和调用

1、无参数的方法

// 方法的声明 格式:方法类型 (返回值类型)方法名
- (double)pi;
// 方法的实现
- (double)pi
{
	return 3.14;
}
// 方法的调用
double pi = [对象名 pi];
2、有一个参数的方法

// 方法的声明 格式:方法类型 (返回值类型)方法名:(参数类型)参数名
- (void)show:(NSString *)name
// 方法的实现
- (void)show:(NSString *)name
{
	NSLog(@"%@", name);
}
// 方法的调用
[对象名 show:@"WhyRanR"];
3、有多个参数的方法
// 方法的声明 格式:方法类型 (返回值类型)方法名第1部分:(参数类型1)参数名1 方法名第2部分:(参数类型2)参数名2
- (int)sumWithNum1:(int)num1 andNum2:(int)num2;
// 方法的实现
- (int)sumWithNum1:(int)num1 andNum2:(int)num2
{
	return num1 + num2;
}
// 方法的调用
int sum = [对象名 sumWithNum1:100 andNum2:200];


二、方法与函数的区别

/*
	方法:方法是Objective-C独有的一种结构,只能在Objective-C中声明、定义和使用,C语言不能声明、定义和使用。
*/
// 1、类方法以+号开头,对象方法以-号开头
+ (void) init;	// 类方法
- (void) show;		// 对象方法

// 2、在@interface和@end之间声明,在@implementation和@end之间定义
@interface Test : NSObject
// 方法声明
+ (void) init;
- (void) show;
@end
@implementation Test
// 方法实现
+ (void) init
{

}
- (void) show
{

}
@end
// 3、类方法只能由类来调用,对象方法只能由方法来调用
// 调用类方法
[Test init];
// 调用对象方法
Test *t = [Test new];
[t show];
// 4、方法归类、对象所有。
// 5、方法声明和实现中用到的数据类型必须用()括住。

/*
	函数:函数即C语言中的函数,在C和Objective-C中都声明、定义和使用。
*/
// 1、函数能写在文件中的任意位置(@interface和@end之间除外),函数归文件所有。
int add(int num1, int num2)
{
	return num1 + num2;
}
// 2、函数调用不依赖于对象。
int sum = add(1, 2);
// 3、函数内部不能直接通过成员变量名访问某个对象的成员变量。

三、类方法与对象方法

/*
	类方法
 */
// 1、类方法以+开头。
+ (void) show;
// 2、只能由类名或类对象来调用。
[Person show];

Class personClass = [Person class];
[personClass show];
// 3、类方法中不能访问成员变量(实例变量)。
// 类在加载的时候还没有对象,故没有实例变量,所以类方法不能访问成员变量。

/*
	对象方法
 */
// 1、对象方法以-开头。
- (NSString *) name;
// 2、只能由对象来调用。
Person *p = ...;
NSString *name = [p name];
// 3、对象方法中能访问当前对象的成员变量(实例变量)。
- (void) setName:(NSString *) name
{
	self->_name = name;
}

// 在一个类中对象方法和类方法可以重名
@interface Person : NSObject
+ (void) show;
- (void) show;
@end

@implementation Perosn
+ (void) show
{
	NSLog(@"Person类方法");
}
- (void) show
{
	NSLog(@"Person对象方法");
}
@end

---------------------- <a href="http://www.itheima.com"target="blank">iOS开发</a>、<a href="http://www.itheima.com"target="blank">iOS培训</a>、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值