zoukankan      html  css  js  c++  java
  • 《黑马程序员》 OC的认识和第一个OC(Objective

    面向对象和面向过程的区别

       ① oc是面向对象

       ② c是面向过程

       ③  面向对象和面向过成只不过是解决问题的两种不同的思路

       ④  面向过程只不过是考虑问题解决的步骤,面向对象只不过是考虑解决问题需要的对象。

    OC 类的认识

         类的设计必须关心三样事物:

             ① 类名

             ② 属性

             ③ 行为

          类名:所有的名词都是类名,且类名的第一个字母必须大写。

                  如果类名有多个名词,要使用驼峰标示。

          属性:代表这个类在创建出来所拥有的的属性。

          行为: 这个类所拥有的功能。

    类的创建

         // 类的声明

          @interface  类名

          {

             // 大括号中间都会写上类的所有属性。

           }

           // 在这里声明类的行为。

          @end

        // 类的实现

         @implementation 类名

         // 在这里对类声明的行为进行实现。

         @end

       // 利用创建出来的类来创建对象

         [行为执行者  行为名称]

          例:[Car  new]  这样就简单创建出来了一个OC对象

     第一个oc类

    注: oc的类必须通过指针来操作,只能使用这一种方法。

       

    //
    //  main.m
    //  类的创建


    // oc中的 NSObject声明在<Foundation/Foundation.h>中 #import <Foundation/Foundation.h> // 第一个oc类 // 类名:Car // 属性:轮胎个数 wheels 、速度 speed // 方法:跑 // 定义一个函数:需要函数的声明和实现 // 定义一个类: 需要类的声明和实现 // 类的声明 // oc关键自比须以@开头, // 类名开头的第一个字母必须以大写字母开头,如果有多个单词每个单词的开头必须时大写字母,要使用驼峰标示 // NSObject表示使这个类具备创建对象的能力 // @interface用来声明成员变量/实例变量,和对象方法。 @interface Car: NSObject { // @public可以让外部的指针间接访问成员变量 @public int wheels; int speed; } /* 1 oc对象方法必须以减号开头。 2 对想方法的返回值必须用括号括住。 3 方法的声明规则:(返回值)方法名:参数 4 oc方法中括号只括住数据类型 */ -(void)run; @end // 类的实现: @implementation Car // 方法的实现:说清楚声明中的方法 -(void)run { NSLog(@"这辆车跑起来了"); } @end int main(int argc, const char * argv[]) { // oc中只能通过类来创建对象 // 在oc中想要只想一些行为就先写一个[行为执行者 行为名称] // oc中创建的对象只能通过指针来操作 // [Car new]每次都会创建一个新对象,并且会返回新对象本身(对象的地址) Car *c1 = [Car new]; // 通过指针来访问成员变量 // 给c1指向的类的wheels属性赋值4, // 给c1指向的类的speed属性赋值为300; c1 -> wheels = 4; c1 -> speed = 300; // 给c1指向的类发送一条run消息,来调用run方法的实现。 [c1 run];
    // 要访问类内部的成员变量必须使用指针来访问 NSLog(
    @"轮胎个数 = %d,速度为= %d",c1 ->wheels,c1 ->speed); return 0; }

    注意点:

    //  main.m
    //  第二个oc类
    //
    //  Created by Apple on 15-3-16.
    //  Copyright (c) 2015年 Apple. All rights reserved.
    //
    
    /*
         类名: person
        属性 : 年龄、体重
        行为: 跑
     */
    #import <Foundation/Foundation.h>
    
    // 一个@interface必须对应一个@end  中间不可以进行嵌套定义
    // 声明和实现必须写在对应位置
    // 成员变量不允许初始化
    // 成员变量不允许使用static修饰
    // 类的实现可以写在mian函数后面,但是声明必须写在main函数前面进行声明
    @interface Person : NSObject
    {
        
        @public
        int age;
        double weight;
    }
    
    - (void)run;
    @end
    
    @implementation Person
    
    - (void)run
    {
        // 在这里访问的成员变量是那个对象调用,就访问哪个对象内部的成员变量
        NSLog(@"这个年龄为%d体重为%f的人跑起来了",age,weight);
    }
    
    @end
    
    int main()
    {
        // 类在创建过程中只会加载一次
        // 创建的对象都会有自身的成员变量、
        // 每个对象本身都会有一个isa指针,指向本身的类。
        //
        Person *p = [Person new];
        p->age = 20;
        p->weight = 1.75;
        
        // 方法在调用过程中会通过isa指针去类里面寻找对应的方法,
        [p run];
        
        Person *p1 = [Person new];
        p1->age = 30;
        p1->weight = 2.00;
        [p1 run];
        
            return 0;
    }

    注意点 ①  成员变量和属性必须写在@interface 和 @end中间。

             ②   成员变量不允许初始化 。

             ③   成员变量不允许使用static修饰 。

             ④   类的实现可以写在mian函数后面,但是声明必须写在main函数前面进行声明。

    类中方法和函数的区别:

    方法: ① 对象方法都是以减号 - 开头。

             ② 对象方法必须写在@interface和@end之间

               对象方法的实现必须写在@implementation和@end之间

             ③ 对象方法只能由对象调用。

             ④ 对象方法的类都归对象所有。

    函数: ① 函数能写在程序中的任何位置,函数归文件所有。

             ② 函数调用不能依赖对象。

             ③ 函数内部不能直接通过成员变量名访问某个对象的成员变量。

  • 相关阅读:
    webpack配置
    gulp-babel 取消严格模式方法
    时间线
    tojson
    [[],[],[]]这样的数据转化成[{},{},{}]
    BUGFREE的安装
    Linux 打包压缩与搜索命令
    Linux 文件目录管理命令
    Linux 文本文件编辑命令
    Linux 工作目录切换命令
  • 原文地址:https://www.cnblogs.com/honey503775123/p/4343394.html
Copyright © 2011-2022 走看看