黑马程序员------oc语言学习笔记之类和对象

来源:互联网 发布:手机淘宝店面 编辑:程序博客网 时间:2024/05/20 09:21

------<Java培训、Android培训、iOS培训、.Net培训期待与您交流>------

一、面向对象和面向过程
1、面向过程更取向与解决问题的过程和步骤,比如把衣服放进洗衣机 脱掉衣服,走到洗衣机,打开洗衣机,放进衣服,放进洗衣粉,

设置洗衣机洗衣服。

2、面向过程就是解决问题需要哪些对象
例如,洗衣服
洗衣机自己打开盖子
洗衣机放水
人放衣服
洗衣机洗启动
在面向对象的思想里万物都是对象!
面向对象的优点:大幅度增加项目的成功率、减少维护费用和提高可移植性和可靠性
3、面向对象与面向过程的区别
面向过程:
强调的是功能行为,关注的是解决问题需要那些步骤
面向对象:
将功能封装对象,强调具备了功能的对象
关注的是解决问题需要那些对象
面向对象是基于面向过程的

二、类和对象
类和对象 就好比是 建筑图纸与建筑
先有类,才能创建对象
1、类
类的命名规则
>1、类名的第一个字母必须是大写
>2 不能用下划线
>3多个英文单词必须用驼峰标识

类的构成
>1类名,例如:学生,老师,人,狗等
>2类的属性,比如学生的成绩、身高、体重
>3类的方法,对属性的操作的方法

2、类的声明和实现
@interface 类名
{

成员变量
……

- (void)方法名;
@end
类的实现
@implementation
-  (void)方法名
{
方法的实现

@end

例子:

import<Foundation/foundation.h>//foundation.h 是oc语言的基础框架 //Nsobject 是一个父类,任何类都要继承Nsobject@interface  Person : NsObject//声明一个person类{@public//可以让外部访问成员变量,只需要定义一次int weight;int age;//定义成员变量}//实现对象方法,对象的方法必须用-号开头//对象方法中任何数据类型都必须用()括住- (void)Age;      //定义方法@end//用来实现interface中声明的方法@implementation Car- (void)Age{Nslog(“@the person Age is %d”,age);}@endint main(){//定义一个对象指针,指向新创建的对象//执行了类的new行为创建对象//[类名  new]每次都会创建一个新对象并且反悔新对象本身Person *p=[Person new]; p->weight=100;p->age=50;//调用Age方法[p Age];Person *p1=[Person new];p->weight=120;p->age=40;[p1 Age];return 0;}

三、类和成员变量常见的错误

1.只有类的声明没有类的实现
例如

#import <Foundation/Fondation.h>@interface tom :NSObject{int age;int weight;}-(void)run;@endint main(){return 0;}

2.类和成员变量不能嵌套包含,只能一对一配对的@end,中间不能嵌套任何东西
在类里定义了方法,必须在implement
ation里面实现,
在implementation里实现的方法必须在interface里定义

3.成员变量必须在对象中调用,不能单独调用
  成员变量的初始化定义值不能在interface里给成员变量赋值

例如:

@interface tom :NSObject{int age=4;//error;int weight;}

4 不能在interface里随便将c语言的变量来使用

@interface tom :NSObject{int age;int weight;Static int wheels;//error}
三、oc中方法和函数的区别

对象方法:
1>对象方法只能声明在@interface和@end之间,oc方法不能独立于类存在
2>对象方法必须以-号开头
3>对象方法必须由对象调用,不能单独调用
4>对象方法属于类
函数:
1>函数可以存在与文件的任何位置
2>函数的调用不依赖对象,随时调用
3>函数内部不能通过成员变量访问某个成员变量
OC对象和函数的关系:

#import <Foundation/Foundation.h>@interface Car : NSObject{//成员变量@publicint wheels;int speed;}- (viod)run;@end@implemention Car- (void)run{NSLog(@"%d个轮子,速度为%dkm/h的车子跑起来",wheels,speed);}@endvoid test(int w,int s){w=20;s=200;}void test1(Car *newc){newc->wheels=5;//函数只能通过对象来调用成员变量}void test2(Car *newc){Car *d=[Car new];d->wheels=7;d->speed=300;newc=d;newc->wheels=6}int main(){Car *c = [Car new];c->wheels=5;c->speed=200;test1(c);test2(c);return 0;}

五、带参数的成员方法命名规则
- (返回类型)方法名:(参数类型)参数名:(参数类型)参数名
-(void)square:(double)number
例如

#import<Foundation/Foundation.h>@interface jsq : NSObject-(double) pi;-(int)pingfang:(int)num;@end@implementation jsq-(double) pi{return 3.14;}-(int)pingfang:(int)num{return num*num;}@endint main(){jsq *p=[jsq new]int a=[p pingfang:10];NSLog(@"%d",a);}

0 0
原创粉丝点击