OC学习笔记04——理解面向对象

面向对象是相对于面向过程而言的
面向对象和面向过程都是一种思想

面向过程

强调的是功能行为
关注的是解决问题需要哪些步骤

面向对象

将功能封装进对象,强调具备了功能的对象
关注的是解决问题需要哪些对象

面向对象是基于面向过程的
面向对象的特点

是一种符合人们思考习惯的思想
可以将复杂的事情简单化
将程序员从执行者转换成了指挥者
完成需求时:
先要去找具有所需功能的对象来用。
如果该对象不存在,那么创建一个具有所需功能的对象。
这样简化开发并提高复用。

类与对象的关系

类是具体事务的抽象,概念上的定义。
对象即是该类事务实实在在存在的个体

类的定义

具有相同属性的事物的集合。
属性:对应类中的成员变量
行为:对应类中的成员方法

在OC中创建一个类

包括两部分:声明和实现
1.声明
类的声明必须以@interface开头,必须以@end结尾
NSObject是所有类的祖先类,也叫基类,;NSObjeect 使Person具有创建对象的能力
注意:如果一个类只有声明而没有实现,那么这个类在链接的时候就会报错,不会创建成功。
2.实现
类的实现必须以@inmplementation 开头,必须以@end结尾
OC中方法声明的格式:
无形参:方法类型符(返回值类型)方法名称
对象方法:是属于对象的,只能由对象调用,它的方法类型符是 -
注意点:
1.成员的声明必须在@interface与@end之间{}中,不能放在大括号外。
2.方法的声明必须放在大括号和@end之间。
3.@implementation是用来实现方法的
4.如果一个类只有声明没有实现,那么链接就会报错。

@interface Person : NSObject
{	
	/*
	一定要在大括号中声明类的属性(成员变量)
	命名规则:标识符规则
	命名规范:必须以_开头,并且_后的第一个字母必须小写,其后的单词首字母大写
	*/
	@public
	char *_name;
	int _age;
}
- (void) show;
/*
吃
带有一个参数的方法
*/
- (void) eat:(char *) food ;
- (void) eat:(char*) food using:(char*) tools;
@end 
@implementation Person
 - (void) show
 {	
 	//对象方法中可以直接访问该对象的成员变量
 	NSLog(@"name = %s,age = %d",_name,_age);
 }
 - (void) eat:(char *) food 
 {	
 	NSLog(@"吃了 %s",food)}
 - (void) eat:(char*) food using:(char*) tools
 {	
 	NSLog(@"使用 %s 吃 %s",tools,food)}
 /*
 1.:是方法名称的一部分
 2.一个:对应一个形参
 3.方法声明中的所有数据类型都要用()括起来
 4.:前面的文字是用来描述参数的作用的
 5.冒号前面的参数说明是可以省略的,但是开发时千万不要省略
 */
@end 
int main(int argc ,char*argv[])
{
	/*
	[类名 new] 作用
	1.为Person这个对象在堆中分配内存
	2.初始化成员变量
	3.返回指向刚刚创建出来的对象的指针
	*/	
		Person *p1 =[Person new];
		p1->age = 10;
		p1->name = "xiao hu";
		[p1 show];
		[p1 eat:"beef"];
		[p1 eat:"beef" using:"knife"];
		return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值