黑马程序员---OC基础知识②
来源:互联网 发布:开票软件使用方法 编辑:程序博客网 时间:2024/06/10 07:56
1.面向对象与面向过程的区别:
面向过程关注的是解决问题需要哪些步骤;面向对象关注的是解决问题需要哪些对象
2。现实生活中面向对象的例子
想打电话\发短信 找手机,不用分析电话要怎样才能拨通
去饭店吃饭 找服务员,不用分析怎么到厨房炒菜
汽车坏了 找汽车维修工,不用分析修车的步骤
境界:万物皆对象
3.OC中的面相对象
①OC中的类相当于图纸,用来描述一类事物。也就是说,要想创建对象,必须先有类
②OC利用类来创建对象,对象是类的具体存在
③因此,面向对象解决问题应该是先考虑需要设计哪些类,再利用类创建多少个对象
4.设计一个类,并根据类来创建对象
一般来说,类的设计包括这几个部分
①类名
*类名的第一个字母必须是大写
*不能有下划线
*多个英文单词,用驼峰标识
②属性
③行为(功能)
5.下面是一个OC程序的例子,并详细说明句子的作用
#import <Foundation/Foundation.h>
// 类的声明
@interface Car : NSObject
{
@public
int wheels; // 多少个轮子
int speed; // 时速
}
- (void)run; // 跑的行为
@end
1)成员变量
@interface的大括号{}中声明的变量:wheels、speed
@interface的大括号和函数的大括号是不一样的
默认会初始化为0
2)@public
@public可以让Car对象的wheels和speed属性被外界访问
3)NSObject
加上:NSObject的目的是让Car类具备创建对象的能力
// 类的实现
@implementation Car
- (void) run
{
NSLog(@"%i个轮子,%i时速的车子跑起来了", wheels, speed);
}
@end
// 主函数
int main()
{
// 创建车子对象
Car *c = [Car new];
c->wheels = 3;
c->speed = 300;
[c run];
return 0;
}
1)main函数的代码分析、内存分析(对象在内存中有成员)
[Car new]每次都会创建出新的对象,并且返回对象的地址,那么就应该用一个指针变量保存对象的地址
Car *c = [Car new];
用一个指针变量c指向内存中的Car对象
设置车子对象的属性
跟用指向结构体的指针访问结构体属性一样,用->
c->wheels = 3;
c->speed = 300;
在OC中,想执行一些行为,就写上一个中括号[行为执行者 行为名称]
[c run];
6.OC方法跟函数的区别
方法
1.对象方法都是以减号-开始
2.对象方法的声明必须写在@interface和@end之间
对象方法的实现必须写在@implementation和@end之间
3.对象方法只能由对象来调用,
4.对象方法归类、对象所有
函数
1.函数能写在文件中的任意位置(@interface和@end之间除外),函数归文件所有
2.函数调用不依赖于对象
3.函数内部不能调用对象的成员变量
7.方法声明和实现(类方法和对象方法,带参数的方法)
当OC方法中带参数时,OC方法中一个参数对应一个冒号,函数名通常中通常语义中包含第一个参数名的描述,如
-(int)sumWithNum1:(int)num1; // 带一个参数的方法
当有多个参数是从第二个参数起,以空格开始依次添加参数描述信息、冒号、参数类型、参数名,如
-(int)sumWithNum1:(int)num1 andNum2:(int)num2; // 官方建议这样写
每个方法中有几个参数,方法名中就有几个冒号,如
-(int)pingFang:(int)num;
方法名为:pingFang:
也就意味着所有的描述信息加冒号组成了方法名-(int)sumWithNum1:(int)num1 andNum2:(int)num2;
方法名为:sumWithNum1: andNum2:
8.匿名对象
有时候利用OC创建一个对象后并没有用该对象类型的指针指向它,而是直接调用了方法或者做了其他事情,这样的对象就叫做匿名对象(没有指向它的变量名)。(编程不要使用,知道即可)
如
属性访问
[Car new]->speed = 200;
方法调用
[ [Car new] run];
面向过程关注的是解决问题需要哪些步骤;面向对象关注的是解决问题需要哪些对象
2。现实生活中面向对象的例子
想打电话\发短信 找手机,不用分析电话要怎样才能拨通
去饭店吃饭 找服务员,不用分析怎么到厨房炒菜
汽车坏了 找汽车维修工,不用分析修车的步骤
境界:万物皆对象
3.OC中的面相对象
①OC中的类相当于图纸,用来描述一类事物。也就是说,要想创建对象,必须先有类
②OC利用类来创建对象,对象是类的具体存在
③因此,面向对象解决问题应该是先考虑需要设计哪些类,再利用类创建多少个对象
4.设计一个类,并根据类来创建对象
一般来说,类的设计包括这几个部分
①类名
*类名的第一个字母必须是大写
*不能有下划线
*多个英文单词,用驼峰标识
②属性
③行为(功能)
5.下面是一个OC程序的例子,并详细说明句子的作用
#import <Foundation/Foundation.h>
// 类的声明
@interface Car : NSObject
{
@public
int wheels; // 多少个轮子
int speed; // 时速
}
- (void)run; // 跑的行为
@end
1)成员变量
@interface的大括号{}中声明的变量:wheels、speed
@interface的大括号和函数的大括号是不一样的
默认会初始化为0
2)@public
@public可以让Car对象的wheels和speed属性被外界访问
3)NSObject
加上:NSObject的目的是让Car类具备创建对象的能力
// 类的实现
@implementation Car
- (void) run
{
NSLog(@"%i个轮子,%i时速的车子跑起来了", wheels, speed);
}
@end
// 主函数
int main()
{
// 创建车子对象
Car *c = [Car new];
c->wheels = 3;
c->speed = 300;
[c run];
return 0;
}
1)main函数的代码分析、内存分析(对象在内存中有成员)
[Car new]每次都会创建出新的对象,并且返回对象的地址,那么就应该用一个指针变量保存对象的地址
Car *c = [Car new];
用一个指针变量c指向内存中的Car对象
设置车子对象的属性
跟用指向结构体的指针访问结构体属性一样,用->
c->wheels = 3;
c->speed = 300;
在OC中,想执行一些行为,就写上一个中括号[行为执行者 行为名称]
[c run];
6.OC方法跟函数的区别
方法
1.对象方法都是以减号-开始
2.对象方法的声明必须写在@interface和@end之间
对象方法的实现必须写在@implementation和@end之间
3.对象方法只能由对象来调用,
4.对象方法归类、对象所有
函数
1.函数能写在文件中的任意位置(@interface和@end之间除外),函数归文件所有
2.函数调用不依赖于对象
3.函数内部不能调用对象的成员变量
7.方法声明和实现(类方法和对象方法,带参数的方法)
当OC方法中带参数时,OC方法中一个参数对应一个冒号,函数名通常中通常语义中包含第一个参数名的描述,如
-(int)sumWithNum1:(int)num1; // 带一个参数的方法
当有多个参数是从第二个参数起,以空格开始依次添加参数描述信息、冒号、参数类型、参数名,如
-(int)sumWithNum1:(int)num1 andNum2:(int)num2; // 官方建议这样写
每个方法中有几个参数,方法名中就有几个冒号,如
-(int)pingFang:(int)num;
方法名为:pingFang:
也就意味着所有的描述信息加冒号组成了方法名-(int)sumWithNum1:(int)num1 andNum2:(int)num2;
方法名为:sumWithNum1: andNum2:
8.匿名对象
有时候利用OC创建一个对象后并没有用该对象类型的指针指向它,而是直接调用了方法或者做了其他事情,这样的对象就叫做匿名对象(没有指向它的变量名)。(编程不要使用,知道即可)
如
属性访问
[Car new]->speed = 200;
方法调用
[ [Car new] run];
0 0
- 黑马程序员---OC基础知识②
- 黑马程序员-③oc基础知识
- 【黑马程序员】-OC基础知识总结
- 黑马程序员---OC基础知识①
- 黑马程序员---OC基础知识③
- 黑马程序员---OC基础知识④
- 黑马程序员---OC基础知识⑤
- 黑马程序员---OC基础知识⑥
- 黑马程序员---OC基础知识⑦
- 黑马程序员---OC基础知识⑧
- 2、黑马程序员-OC语言基础知识
- 黑马程序员——OC语言基础知识
- 黑马程序员 ——OC基础知识
- 【黑马程序员-学习笔记】OC-基础知识总结
- 黑马程序员——OC基础知识
- 黑马程序员—OC学习日记.OC基础知识
- 黑马程序员——OC学习笔记01 OC基础知识。
- 黑马程序员--IOS入学学习--6-OC基础知识
- Eclipse新建Web项目出现The superclass "javax.servlet.http.HttpServlet" was not found...
- 设计模式之代理模式(Proxy Pattern)
- uva 11235(RMQ)
- 模仿的网易和钱钱钱的腾讯
- String,StringBuffer,StringBuilder详解
- 黑马程序员---OC基础知识②
- 浅谈java集合类(三)【Set,Queue】
- 1008.Elevator
- 黑马程序员--网络编程
- 进程内存映像的地址空间布局
- c语言system函数
- 欢迎使用CSDN-markdown编辑器
- Android四大组件之一:Service
- 第4周项目1三角形类的构造函数(1)