黑马程序员一OC面向对象语法
来源:互联网 发布:怎么从淘宝交水电费 编辑:程序博客网 时间:2024/05/16 05:45
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一.面向对象和面向过程思想
OC是面向对象的,C是面向过程的.面向对象和面向过程知识解决问题的两种不同思想;
面向对象和面向过程区别
1)以用电脑听歌为例子
a)面向过程
打开电脑
播放电脑中的歌曲
关闭电脑
b)面向对象
电脑开机
播放歌曲
电脑关机
2)区别分析
面向过程关注的时解决问题需要哪些步骤;面向对象关注的时解决问题需要哪些对象;
没有开发经验很难感受到他们的区别,两种思想都能达到解决问题的目的,但是解决思路不一样;
二.类和对象的关系
面向对象中有2个非常重要的概念:类和对象
1.如何创建对象
例如:创建汽车
a)需要现有汽车的建造图纸,图纸上描述清楚汽车应该具备的属性和功能(行为)
属性:轮子数,时速
功能(行为):跑
b)然后再根据图纸上的描述生成汽车
c)每一辆汽车都是对象,都有自己具体的属性值,都是图纸的实例
d)图纸是抽象的,汽车是具体的.图纸是对汽车对象的高度概括
2.OC中的面向对象
1)OC中的类相当于图纸,用来描述一类事物,也就是说,要想创建对象,必须先有类
2)OC利用类来创建对象,对象是类的具体存在
3)因此,面向对象解决问题应该是先考虑需要设计哪些类,再利用类创建多少个对象
3.需要设计哪些类,如果设计类
1)类的设计,只关心3样东西:
事物名称(类名):人(Person)
属性:身高(height),年龄(age)
行为(功能):跑(run),打架(fight)
2)一般名词都是类
3)拥有相同(或者类似)属性和行为的对象都可以抽象出一个类
三.定义OC的类和创建OC的对象
1.类的声明
1)代码编写
定义一个Car类,拥有2个属性:轮子数,时速,一个行为:跑
类名\属性的命名规则:标示符的规则
类名的命名规范:有意义,驼峰标识,首字母大写
#import <Foundation/Foundation.h>//类的声明@interface Car : NSObject{ @public int wheels;//多少个轮子 int speed;//时速}-(void)run;//跑的行为@end
2)成员变量
@interface的大括号{}中声明的变量:wheels,speed
@interface的大括号和函数的大括号是不一样的
默认会初始化为0
3)@public
@public可以让Car对象的wheels和speed属性被外界访问
4)NSObject
NSObject的目的是让Car类具备创建对象的能力
2.类的实现
//类的实现@implementation Car-(void) run{ NSObject(@"%i个轮子,%i时速的车子跑起来了",wheels,speed)<span style="font-family: 'Heiti SC Light';">;</span>}@end
3.创建对象
代码编写
//主函数int main(){ //创建车子对像 Car *c = [Car new]; c->wheels = 3; c->speed = 300; [c run]; return 0;}
四.set方法和get方法
1.set方法和get方法的使用场合
@public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问
2.set方法
1)作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值
2)命名规范:
方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写
形参名称不要跟成员变量同名
3.get方法
1)作用:返回对象内部的成员变量
2)命名规范:get方法的名称一般就跟成员变量同名
4.成员变量的命名规范
成员变量都以下划线 _开头
可以跟get方法的名称区分开
可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量
5.代码示例
#import <Foundation/Foundation.h>//声明@interface Car : NSObject{ int _wheels;//轮子个数}//set方法- (void) setWheels : (int)wheels;//get方法- (int) wheels;@end@implementation Car//set方法实现-(void) setWheels : (int)wheels{ //对外面传进来的轮子数进行过滤 if (wheels <= 0 ) { wheels = 1; } _wheels = wheels;}//get方法的实现- (int) wheels{ return _wheels;}@end
6.封装的好处
过滤不合理的值
屏蔽内部的赋值过程
让外界不必关注内部的细节
五.类方法
1.基本概念
直接可以用类名来执行的方法
2.类方法和对象方法对比
1)对象方法
以减号 -开头
只能让对象调用,没有对象,这个方法根本不可能被执行
对象犯法能访问实例变量(成员)
2)类方法
以加号 +开头
只能用类名调用,对象不能调用
类方法中不能访问实例变量(成员变量)
使用场合:当不需要访问成员变量的时候,尽量用类方法
类方法和对象方法可以同名
六.self关键字
1.成员变量和局部变量同名
当成员变量和局部变量同名时,采取就近原则,访问的时局部变量
用self访问成员变量,区分同名的局部变量
2.使用细节
1)出现的地方:所有的OC方法中(对象方法\类方法),不能出现在函数
2)所用
使用"self->成员变量名"访问当前方法调用的成员变量
使用"[self方法名];"来调用方法(对象方法\类方法)
3.常见错误
低级错误:用self去调用函数
类方法中用self调用对象方法,对象方法中用self调用类方法
self死循环
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
- 黑马程序员一OC面向对象语法
- 黑马程序员-IOS-OC基础-面向对象语法一
- 黑马程序员-OC语言基础:面向对象语法 一
- 黑马程序员--oc:面向对象语法
- 黑马程序员 OC基础: 面向对象(一)
- 黑马程序员-IOS-OC基础-面向对象语法二
- 黑马程序员-IOS-OC基础-面向对象语法
- 黑马程序员-IOS-OC基础-面向对象语法二
- 黑马程序员-IOS-OC基础-面向对象语法三
- 黑马程序员——OC基础---面向对象语法
- 黑马程序员-OC语言基础:面向对象语法 二
- 黑马程序员-OC语言基础:面向对象语法 三
- 黑马程序员-OC语言基础:面向对象语法 四
- 黑马程序员---oc--面向对象
- OC面向对象语法<一>
- 黑马程序员—OC—面向对象(一)
- 黑马程序员_Java语法及面向对象基础<一>
- [黑马程序员][OC]面向对象-思想
- 黑马程序员——java入门
- JS笔记整理(四)
- android应用中屏蔽home键、back键
- 黑马程序员-OC语言核心语法(2)构造方法
- 【OpenCV】基于HSV的肤色分割
- 黑马程序员一OC面向对象语法
- Java学习之IO总结
- Linux I/O 端口和 I/O 内存
- android 4.4.2 开发环境
- 微云收藏 - js脚本
- euc-kr编码中文下乱码解决方案,idhttp
- 专供开发者使用的免费虚拟机资源:超能云 (SuperVessel Cloud)
- iOS开发 -Hello World
- 函数重载和构造函数