面向对象

面向对象(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 = ;//设置对象的属性
c->_height = ;//设置对象的属性 [c run];//调用对象方法
return ;
} /** 内存分析 **/
//[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 : ];//带参数方法的调用
//int i = [p test : 10 test1 : 9];//多参数方法的调用 NSLog(@"test方法的值是:%i", tmp);
return ;
} /** 注意 **/
//没有@interface 只有@implementation 也可以开发一个类
//同一个类中不允许两个对象方法同名 (:也是方法名的一部分) /** 方法语法详解 **/
//- (int) test : (int) i;
//方法类型 (方法返回值类型) 方法名 : (参数类型) 参数名; //[p test : 7]
//[指针变量名 方法名 : 实际参数] //- (int) test : (int) i test1 : (int) i1;
//方法类型 (方法返回值类型) 方法名 : (参数类型) 参数名 方法名 : (参数类型) 参数名; //[p test : 10 test1 : 9]
//[指针变量名 方法名 : 实际参数 方法名 : 实际参数]

Objective-C 类和对象的更多相关文章

  1. Objective-C(二、类和对象)

     类和对象 #import是include的升级版,可以自动防止重复包含,所以注意:大家以后在引入头文件的时候都使用import Foundation是一个框架,Foundation.h是Founda ...

  2. iOS RunTime运行时(1):类与对象

    Objective-C语言是一门动态语言,他将很多静态语言在编译和链接期做的事放到了运行时来处理.这种动态语言的优势在于:我们写代码更具有灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一下 ...

  3. Objective -C Object initialization 对象初始化

    Objective -C Object initialization 对象初始化 1.1 Allocating Objects  分配对象 Allocation is the process by w ...

  4. Java编程里的类和对象

    像我们搞计算机这块的,都知道这么一件事,当前的计算机编程语言主要分为两大块,一为面向过程,二为面向对象.Java就是一门纯面向对象的语言.学习了一个月左右的Java,在下对于Java当中的类和对象有了 ...

  5. Python - 类与对象的方法

    类与对象的方法

  6. C++基础知识(5)---类和对象

    终于把C++中的基础在前面的几篇博客中总结完了,可能还有一些语法还没有总结到,没关系,以后用到了再查资料就好.类是C++中的一个非常重要的概念,这是区别你使用的C++到底是面向过程还是面向对象的一个重 ...

  7. 简述JavaScript对象、数组对象与类数组对象

    问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...

  8. 前端学PHP之面向对象系列第一篇——类和对象

    × 目录 [1]类 [2]成员属性[3]成员方法[4]对象[5]成员访问[6]this 前面的话 面向对象程序设计(OOP)是一种计算机编程架构.计算机程序由单个能够起到子程序作用的单元或对象组成,为 ...

  9. Objective-C Runtime 运行时之一:类与对象

    Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一 ...

  10. [Java入门笔记] 面向对象编程基础(一):类和对象

    什么是面向对象编程? 我们先来看看几个概念: 面向过程程序设计 面向过程,是根据事情发展的步骤,按进行的顺序过程划分,面向过程其实是最为实际的一种思考方式,可以说面向过程是一种基础的方法,它考虑的是实 ...

随机推荐

  1. es6之函数扩展与对象扩展

    一.函数扩展 1.参数默认值 参数有默认值,后面不可以再加没有默认值的变量.如以下test函数中,不可以加写成 function test(x,y="word",z){ } fun ...

  2. subline关联linux系统

    一. 插件安装用Package Control安装插件按下Ctrl+Shift+P调出命令面板输入install 调出 Install Package 选项并回车,然后输入sftp,下拉列表中会出现一 ...

  3. python -- @classmethod @staticmethod区别和使用

    python中的定义: class MyClass: ... @classmethod  # classmethod的修饰符 def class_method(cls, arg1, arg2, ... ...

  4. HDU 1014 Uniform Generator(模拟和公式)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1014 Uniform Generator Time Limit: 2000/1000 MS (Java ...

  5. ovs的卸载

    使用apt-get安装的openvswitch,然后卸载好麻烦撒,而且还没有相关资料说一下怎么删除的,特此记录一下,希望有个参考 首先把服务器上使用ovs新建的虚拟网桥全部删除掉 然后把原有的内核删除 ...

  6. 小程序内嵌H5——判断小程序环境的坑

    现在各种小程序风靡,这边H5的需求还没有搞定,产品又要求做小程序版本,做可以,关键是618前上线,我-- whatever,618要做推广,日期订了,剩下的就只能是排期,定方案,尽可能完成. 最后和产 ...

  7. 设计一个方法injectBeforeAsyncSend,能够实现如下功能:在发起异步请求之前打印出请求的类型、URL、method、body、timestamp 等信息。

    异步请求逻辑注入 工作中我们需要对异步请求的请求信息打印日志,但是又不能耦合在业务代码中打印.请设计一个方法injectBeforeAsyncSend,能够实现如下功能:在发起异步请求之前打印出请求的 ...

  8. platform平台总线

    一.何为平台总线 (1)相对于usb.pci.i2c等物理总线来说,platform总线是虚拟的.抽象出来的.(2)CPU与外部通信的2种方式:地址总线式连接和专用协议类接口式连接.平台总线,是扩展到 ...

  9. #leetcode刷题之路35-搜索插入位置

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置.你可以假设数组中无重复元素. 示例 1:输入: [1,3,5,6], 5输出: ...

  10. JavaScript 中 this 的原理

    一.问题 学习 JavaScript 其中一个标志就是理解下面两种写法,会输出有不一样的结果. var obj = { foo: function () {} }; var foo = obj.foo ...