面向对象

面向对象(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. Semi-Supervised Dimensionality Reduction

    今天阅读了一篇关于半监督降维的论文,做个总结.这篇论文的全名叫<Semi-Supervised Dimensionality Reduction>(2006),是南大周志华老师的大作. 本 ...

  2. jpa多条件查询

    首先继承JpaSpecificationExecutor<T>接口 需要用到JpaSpecificationExecutor<T>中的Page<T> findAll ...

  3. GIS中的空间参考

    GIS一般都是研究的基于地球的某个区域,例如一个国家.省或市的情况,既然地球上都有经纬度来标识,那么直接用经纬度来标识物体的位置不可以吗?但如果应用不一样,在实际中选择的空间参考系也是不一样的.例如我 ...

  4. idea教程视频以及常用插件整理

    最近在同事的强烈安利下把eclipse换成idea了,本以为需要经历一个艰难的过渡期,谁知道不到3天就深感回不去了. 哎,只能说有时候人的惰性是多么可怕! idea实在是太太太强大了. 不要再问原因. ...

  5. java字符串类型和时间类型的转换

    类型转换 //reqeust.getParameter获取字符串直接赋值 1 public static Date date(String date_str) { try { Calendar zca ...

  6. Msql数据库连接写一个共有的连接工具

    为了避免在每一个DAO中都需要自行连接connection,有多个DAO里都需要获取数据库的连接,并且在很多项目中都是一样的数据库连接. 所以就可以把获取数据库连接的代码重构到一个类里. 这样做的好处 ...

  7. CSU-ACM2018暑期训练7-贪心

    A:合并果子(贪心+优先队列) B:HDU 1789 Doing Homework again(非常经典的贪心) C:11572 - Unique Snowflakes(贪心,两指针滑动保存子段最大长 ...

  8. Jstorm TimeCacheMap源代码分析

    /*** Eclipse Class Decompiler plugin, copyright (c) 2016 Chen Chao (cnfree2000@hotmail.com) ***/ pac ...

  9. STM32和STR71X移植uCos-II操作系统比较分析

    STM32和STR71X移植uCos-II操作系统比较分析 ——ARM7 TDMI和ARMv7-M Cortex-M3 的异同 STM32F103ZE,大容量,ARMv7-M,Cortex-M3系列, ...

  10. hadoop-2.2.0 HA配置

    采用的是4台真实机器: namenode:qzhong  node27 datanode:qzhong node27 node100 node101 操作系统环境:qzhong(Ubuntu-14.0 ...