面向对象编程 oop
面向过程编程 pop
对象是类的实例
//面向过程编程(Procedure Oriented Programming, pop):以事件为中心,关心该事件的详细过程,一步一步实现
//面向对象编程(Object Oriented Programming, OOP):以事物为中心,也就是参数事件的参与者,设计事物的功能,而完成事件只是事物所有功能中的一个小功能
//类 : 具有相同特征和行为的事物的抽象
//类是一个抽象的概念,在生活中不具体
//对象是类的实例,也就是类的具体表现,是具体的,生活的万物都是对象
//如何描述一个类? 通过特征(静态属性)和行为(动态属性,动作
//NSObject 根类
/**
* 类的定义分为两部分:
1,类的接口部分:提供外部访问的接口,相当于使用说明书
2.类的实现部分: 相当于功能的实现
*/
/**
* 类的接口部分写在.h文件中。
/**
* 类的实现部分写在.m文件中
类的实现部分:
坑点
(1)@implementation开头,@end结束,实现内容必须写在中间才有效
(2)@implementation 后的 Person 是要实现的类(需要指定要对那一个类做实现)
*/
// 产生原因:geValue:b:c:方法虽然在.h文件中声明,但是没有在.m文件中实现
//解决方案:将该方法在.m文件中实现即可
//类的实现就是实现该类的方法。
接口部分定义:
(1)以@interface开头,以@end结束,只有把类的接口定义内容写在开始和结束之间才有效
(2)Person 类名
(3): 冒号表示继承,表示它有父类
(4)NSObject 父类名 。
*/
@interface Person : NSObject
{
//实例变量必须写在大括号之内,而且大括号之内只能写实例变量
//对应描述一个类的特征
//实例变量 类似与结构体中的结构体成员
NSString *name;//姓名 字符串类型
NSString *sex;//性别
NSInteger age;//年龄
}
//OC的方法 对应 描述一个类的行为
//void sayHi();
- (void)sayHi; //方法名 sayHi
//OC中方法调用,采用消息发送机制
//[receiver message],第一个为消息接收者,为类或对象,
//receiver 消息接收者 -:减号给对象发消息, +:加号给类发消息
//message 是消息,为方法, -:减号给对象发消息, +:加号给类发消息
//创建对象分两步:
//1.开辟空间
//通过[Person alloc]在堆区开辟的空间才是真正的空间,只不过对于指针变量per存储着堆区的首地址,通过它能访问对象,所以我们把指针变量per叫做对象,(但真正的对象是堆区空间,per本质上就是一个指针变量)
//id可以代表所有的对象类型,可以用对应类型的对象来接收
// Person *per = [Person alloc];
// //2.初始化(赋初值) init方法完成初始化操作-号方法,对象调用
// per = [per init];
//通常创建对象操作连起来做\
Person *per = [[Person alloc] initWithName:@"Frank" sex:@"man" age:18];
[per sayHi];
Person *cuichengjie = [[Person alloc] init];
[cuichengjie sayHi];
Person *cui = [[Person alloc] init];
[cui sayHi];
- (void)sayHi
{
NSLog(@"name:%@,sex:%@,age:%ld", name, sex, (long)age);
}
//自己定义一个初始化方法(自定义了一个init方法)
- (id)initWithName:(NSString *)aName sex:(NSString *)aSex age:(NSInteger)aAge
{
产生原因:没有找到给接收者发送的消息(也就是.h文件中没有该方法)
解决方案:查看接收者和对应的消息是否匹配,如果不匹配,改成匹配的,或者在该类添加该方法 -号和+的区别
OC
最新推荐文章于 2022-04-26 12:41:16 发布