zoukankan      html  css  js  c++  java
  • 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]
    }
  • 相关阅读:
    Bootstrap 插件收集
    target和currentTarget
    微信小程序
    flex
    vue中使用icon和打包
    rem的使用
    vue中使用sass和compass
    vue父子组件传递参数
    weex
    常用软件&&网址
  • 原文地址:https://www.cnblogs.com/IDRI/p/4932392.html
Copyright © 2011-2022 走看看