zoukankan      html  css  js  c++  java
  • Objective-C 类和对象

    面向对象

    面向对象(Object-Oriented)是基于面向过程(procedure-oriented)而言的

    面向对象 强调对象<指挥者> OC, Java语言就是面向对象

    面向过程 强调过程<执行者> C语言就是面向过程

    面向对象是一种编程思想 运用对象 类 封装 继承 多态和消息等概念来构造 测试 重构软件

    面向对象的特点 A:封装 B:继承 C:多态

    面向对象思想的特点 A:它是一种更符合人们思想习惯的思想 B:它使复杂的内容简单化 C:它使我们从执行者变成指挥者

    面向对象的优点 符合人们通常的思维方式 从分析到设计再到编码采用一致的模型表示 具有高度连续性 软件重用性好

    类和对象

    类 对现实世界中事物的描述(成员变量和方法)

    对象 现实世界中实际存在具体的个体

    示例代码一

    #import <Foundation/Foundation.h>
    
    /** 类的声明 **/
    @interface Car : NSObject {//大括号内声明成员变量 默认初始化为0(与函数的大括号是不一样的); NSObject: 根类 让Car具备创建对象的能力
        @public//此关键字可以让成员变量被外界访问
        int _age;//成员变量1
        int _height;//成员变量2
    }
    - (void) run;//对象方法
    @end
    
    /** 类的实现 **/
    @implementation Car
    - (void) run {
        NSLog(@"小车%i岁,%icm,它在跑",_age,_height);
    }
    @end
    
    /** 主函数 **/
    int main() {
        Car *c = [Car new];//创建对象
        c->_age = 10;//设置对象的属性
        c->_height = 180;//设置对象的属性
        
        [c run];//调用对象方法
        return 0;
    }
    
    /** 内存分析 **/
    //[Car new] 每次都会创建出新的对象 并且返回对象的地址值 那么就应该用一个指针变量保存对象的地址

    示例代码二

    #import <Foundation/Foundation.h
    
    @interface Person : NSObject {
        @public
        int _age;
        int _height;
    }
    - (int) test : (int) i;//带参数方法的声明
    //- (int) test : (int) i test1 : (int) i1;//多参数方法的声明
    @end
    
    @implementation Person
    - (int) test : (int) i {//带参数方法的实现
        return i * i;
    }
    //- (int) test : (int) i test1 : (int) i1 {//多参数方法的实现
    //    return i * i1;
    //}
    @end
    
    int main() {
        Person *p = [Person new];
        int tmp = [p test : 7];//带参数方法的调用
        //int i = [p test : 10 test1 : 9];//多参数方法的调用
        
        NSLog(@"test方法的值是:%i", tmp);
        return 0;
    }
    
    /** 注意 **/
    //没有@interface 只有@implementation 也可以开发一个类
    //同一个类中不允许两个对象方法同名 (:也是方法名的一部分)
    
    /** 方法语法详解 **/
    //- (int) test : (int) i;
    //方法类型 (方法返回值类型) 方法名 : (参数类型) 参数名;
    
    //[p test : 7]
    //[指针变量名 方法名 : 实际参数]
    
    
    //- (int) test : (int) i test1 : (int) i1;
    //方法类型 (方法返回值类型) 方法名 : (参数类型) 参数名 方法名 : (参数类型) 参数名;
    
    //[p test : 10 test1 : 9]
    //[指针变量名 方法名 : 实际参数 方法名 : 实际参数]

     

  • 相关阅读:
    javascript-jquery对象的事件处理
    javascript-jquery对象的动画处理
    vue.config.js配置 移动端配置自适应rem响应
    vue封装axios
    js工具类
    git解决空文件夹无法提交
    vue的axios
    vue中axios跨域问题
    全局控制vue的依赖
    linux搭建php环境
  • 原文地址:https://www.cnblogs.com/huangyi-427/p/4597343.html
Copyright © 2011-2022 走看看