进击的KFC:OC概述、面向对象编程、类和对象、实例变量操作
2015-10-31 09:55
337 查看
一.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修饰的实例变量,可以直接使⽤“—>”访问
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修饰的实例变量,可以直接使⽤“—>”访问
相关文章推荐
- Django RestFramework源码剖析(1)——设定不同的serializer
- CTP报单状态 OrderStatus全部状态
- asp.net在IIS环境中访问第三方需数字证书接口时 报 “请求被中止: 未能创建 SSL/TLS 安全通道”
- 使用Memory Analyzer Tool(MAT)Eclipse插件分析内存泄露
- Spring(1)--helloworld
- 【《zw版·Halcon与delphi系列原创教程》 zw_halcon人脸识别
- php 字符串式非关联数组循环
- eclipse编写的GBK项目转变成UTF-8编码
- 深入理解Java Proxy机制(转)
- C++堆和栈的分配
- C++中引用与指针
- 教你如何利用初级C#语言更改银行存款!!!!
- delphi下,不错的多语言翻译组件
- thinkphp第一节结构
- 4.2 codecs--Codec注册管理和基类
- QT5的模块介绍【摘】
- 怎么编程安装字体文件
- java中的一些对XML的操作与方法
- 如何写好代码
- 简单的计算器程序 c++