OC-面向对象

类的设计:

1类名  类名的第一个字母必须大写

    不能有下划线

    多个英文字母,用驼峰标识

2属性

3行为

例子:

  类名:Zoombie   

  属性(成员变量、实例变量):life、speed

  行为(方法):walk、bite

面向对象解决问题应该是先考虑要设计那些类,再利用类创建多少个对象

1、类的声明和实现

  声明:1)成员变量  2)方法声明

@interface Car : NSObject//让Car这个类具备创建对象的能力
{   //大括号声明对象属性
     int wheels;
      int speed;    
}    
方法声明;
方法声明;
- (void)walk;
@end

  实现:

类的实现:
@implementation
Car//实现@interface中声明的方法
- (void)walk        //无分号
{
  NSLog(@"%d岁、%d公斤的人走",age, weight);
}
@endweight

 

int main()
{
    Person *p = [Person new];//把对象的地址赋值给了指针
    p->age = 20;
    p->weight = 50.0;
    [p walk];//调用p的方法
    
    Person *p2 = [Person new];//分配新的存储空间给新的对象
    
    return 0;
}

 

成员变量的直接赋值

int main()
{
    Car *p = [Car new];//定义了一个指针变量p,p将来指向的是Car类型的对象
    //[Car new]会创建出一个新对象, 并且会返回新对象本身(新对象的地址)
    
    //利用指针间接操纵对象属性
    p->wheels  = 4; //把4赋给了指针所指向对象的wheels属性
    p->speed = 250;
    
    NSLog(@"车子有%d个轮子,时速位:%dkm/h",p->wheels, p->speed);
    return 0;
}

(@public)后面的所有实例变量\成员变量,默认会初始化

//方法(行为): 方法名、参数、返回值(声明、实现)
//只要是OC对象的方法,必须以减号 - 开头
//OC方法中任何数据类型都必须用小括号()扩住
//OC方法中的小括号()扩住数据类型

- (void)run;
@end

//方法实现:
[p2 run];//给p所指对象的wheels属性赋值

 

int main()
{
    Person *p = [Person new]//第一次创建出Person 类,会将类加载进内存,
    p->age = 20;            //指针isa指向所属的类
    p->weight = 40;
    [p eat];//调用方法,本质:给指针变量p所指向的对象发送一条eat消息,调用对象的eat方法,跟随isa找到指向Person类的方法
    [p walk];
    
    Person *p2 = [Person new];
    p2->age = 30;
    p2->weight = 60;
    [p2 eat];
    [p2 walk];
    
}
//成员变量是每个对象都有一份
//方法是共有的

 

int main()

{

  Person *p = [Person new]; //在使用类创建对象之前,会将类加载进内存

}

//每个对象内部,默认有一个指针为isa,指向对象所对应的类

调用方法,其实是找到类对应的方法

 

对象与函数参数:

#import <Foundation/Foundation.h>

@interface Car : NSObject
{//成员变量  大括号
  @public int wheels; int speed; //默认等于0 } - (void)run; //方法声明 @end @implementation Car //方法实现 -(void)run { NSLog(@"d个轮子,速度位%dkm/n的车子跑起来",wheels,speed); } @end
void test(int w, int s) { w = 20; s = 200; } void test1(Car *newC) //传入指针 { newC->wheels = 5; } @end int main() {
Car *c = [Car new]; c->wheels = 4; c->speed = 250;
   //test(c->wheels, c->speed)
test1(c);//把c传入test1,,相当于把c存储的地址ffc0给newC,,把wheels改为5
  [c run]
}
posted @ 2015-11-03 10:33  yhidr  阅读(205)  评论(0编辑  收藏  举报