进击的KFC:OC概述、面向对象编程、类和对象、实例变量操作

来源:互联网 发布:阿里云平台介绍ppt 编辑:程序博客网 时间:2024/05/21 15:29

一.OC语言的特点:1.C语言的超集,允许在OC中使用C语言源代码,编译器兼容C语言程序. 2.具备完善的面向对象的特性3.包含一个运行时系统4.类库丰富
OC是一种面向对象的编程.具有:继承,封装,多态的特性

二.类和对象的概念!
类:具有相同特征和行为的事物的抽象.
对象:是类的一个具体的实例.可以说,万物皆对象
对象是类的实例. 类是对象的类型
⾯向对象编程中使⽤对象完成程序
开发中:先定义类,再创建对象,然后使⽤对象。
(1) 定义类包含两部分:接⼝部分和实现部分。分开写。
1. 接⼝部分:对外声明类的特征和⾏为。(.h文件)
2. 实现部分:对内实现⾏为。(.m文件)
例如定义一个人类:Person.具有姓名,年龄,性别的特征(实例变量)和打招呼的行为

(2)创建对象:分为两个两个过程:分配空间(在堆区开辟空间,需要程序原管理的) 和 对对象的初始化
例如:创建一个人:
Person *p = [Person alloc]; // 方法通过[ ]来调用
p[init]; // 对对象进行初始化
这里面我们要讲到两种方法:减号方法(对象方法)和加号方法(类方法).顾名思义,减号方法由对象来调用.加号方法由类来调用.就像上面的,alloc方法是在堆区开辟空间,由Person类来调用,属于类方法. 上面的init方法由对象p来调用,属于对象方法.
(3)给对象赋值:指向符->
p->_name = @”KFC”;
p->_sex = @”男”;
输出信息:
NSLog(@”姓名:%@ 性别:%@”,p->_name,p->_sex);

(4)关于Person类的.h文件和.m文件
[1].h文件,实现的是特征和行为的声明
// .h 接口文件
// 标志:@interface
@interface Person : NSObject
// 类名 :(继承自) 父类NSObject
// 中间 写 声明 或者 实例变量(特征) 行为的声明
{
// 添加一个关键字进行修饰 表明实例变量的可见度
// 因为是OC的关键字,所以要以@开头
@public
// @public关键字 代表公开的意思.作用范围是@public所在的大括号
// 声明的实例变量(特征)要写大括号
// 只要是特征,名字要加_(下划线),标识他是某一个类的实例变量
NSString *_name; // 姓名
NSString *_sex;
NSInteger _age;
}
// 行为方法
// OC语言声明函数
// 实例方法,减号方法-,用对象去调用
// 类方法,加法方法+,用类名去调用

// 打招呼
- (void)sayHi;

// 重写初始化方法 重写的是父类的方法
// 重写的话,一定要跟父类的方法 名字 一样, 返回值 一样, 参数 一样; 只有方法的实现是不一样的
// instancetype 表示返回值是一个对象
//- (instancetype)init; // init是父类的初始化方法,重写初始化方法

// 自定义的初始化方法,根据你类里面有几个实例变量来写的
// 自定义初始化方法 是你创建一个新的类的时候,必写的一个初始化方法
- (instancetype)initWithName:(NSString *)name // 这样写,参数多的情况下比较清楚
sex:(NSString *)sex
age:(NSInteger)age;
// ( 参数类型 )参数名
// 接口文件的结束部分

[2].m文件,标志:implementation
实现方法;
// 自定义初始化方法,根据你类里面有几个实例变量来写的:
- (Instancetype)initWithName:(NSString )name sex:(NSString )sex age:(NSInteger)age
{ // 目的: 对实例变量进行赋值
_name = name;
_sex = sex;
_age = age;
return self;
}

// 一般 重写的初始化方法,写在最上面
// 实现重写的初始化方法
//- (instancetype)init // 一般用上面那种自定义的重写方法,不用这种
//{
// // 需要一个返回值,本类的对象,用self表示
// // self关键字,在本类中,表示本类的对象
// _name = @”呵呵”;
//
//
// return self;
//}
// 中间 写行为(方法)的实现部分

// 打招呼的实现
- (void)sayHi
{
NSLog(@”下午好”);
// 介绍一下自己 打印一下 实例变量(特征)
NSLog(@”姓名:%@ 性别:%@ 学号:%ld”,_name,_sex,_age);

}

tips: // instancetype 表示返回值是一个对象类型.作用同下 void *
// void * 无类型指针 可以转化任何类型的指针.
// 早年间,用 id 表示一个类型.区别:id可以声明一个对象,而instancetype只能作为返回值类型,不能声明一个对象

[3]在main函数里面调用
Person *p1 = [Person alloc]initWithName:@”KFC”,sex:@”男”,age:@”18”];
[p1 sayHi];

(三)总结
⾯向对象和⾯向过程是两种不同的编程思想,思考⾓度不同,前者以
对象为中⼼,后者以事件为中⼼。
类是对象的抽象,对象是类的体现。⾯向对象编程中,先创建出对应
的类,再由类⽣成对象,进⽽完成我们的开发。
类包含接⼝和实现两个部分,对象创建分两步:创建对象、初始化。
public修饰的实例变量,可以直接使⽤“—>”访问

0 0
原创粉丝点击