Objective-C面向对象的编程

目录

  • 对面向对象编程思想的理解
  • 类的声明和定义

类的声明和定义

对关键字super和self的理解

初始化函数

@property声明类成员

  • 类的实例化
  • 继承
  • 组合
  • 多态
  • 编写自己的类库

数据处理的类库

UI类库

第三方类库

对面向对象编程思想的理解

我们往往习惯于使用面向过程的思想去思考问题,C语言是一种面向过程的语言,作为我们编程入门的语言是非常适合的,虽然面向过程的语言比较高效率,但是其对于编写一个庞大的程序来说是比较繁琐的,此时为了解决此问题,我们提出了面向对象编程的编程思想

面向对象的三大特性:封装、继承、多态

把具有相同特征和行为的一组对象封装到类里面,当有需要时,我们可以用类声明出新的对象,让新的对象去实现我们想要的功能

当类与类之间有一种父子关系时,我们可以使用继承,以免重新写一些累赘的方法

思考OC、C++面向对象多态性的实现方式有哪些

OC:继承、Protocol协议

C++:继承(单/多)、抽象类

类的声明和定义

类的声明和定义

声明:@interface 类名:父类名 {  }  @end

定义:@implement{  }  @end

成员变量访问权限修饰符:@public、@protected(默认)、@private

成员方法和类方法:“-”修饰为成员方法,“+”修饰为类方法(类方法中不可以包含实例变量,否则直接报编译时错误)

当想要把成员方法暴露出来时,在@interface 类名:父类名 {  }  @end之间进行声明,则能够在类外部进行调用

静态变量的生成方法:不能在@interface 类名:父类名 {  }  @end之间对成员变量进行static修饰,需要在@implement  @end实现文件中声明一个全局的静态变量,然后写这个静态变量的get方法和set方法供类外部进行调用,这样子就能达到生成静态变量的目的

当成员变量为对象时所需要注意的问题

注意

类的声明和定义两者缺一不可;

对关键字self和super的理解

self:指向所定义的类本身

super:指向定义的类的父类

初始化函数

默认的初始化函数

init

根据需求自定义初始化函数

不一定要调用父类的init函数(系统可能已经通过alloc分配了内存空间,此处仅仅是做初始化操作)

@property声明类成员

使用@property来声明类成员,编译预处理系统会根据@property的属性给类生成相对应的get方法和set方法,此时允许使用点语法来访问所声明的类成员

类的实例化

类名 *对象名 = [[类名 alloc] 初始化函数]/[类名 new];

注:Objective C类对象的声明都是声明其对象指针的

访问成员变量:对象名->成员变量名;

点语法:可以使用”.“来对成员变量进行get操作和set操作

成员方法的调用:[对象名 方法名];

继承

关键字

”:“

书写规范:@interface 类名:父类名{  }  @end

继承的成员变量和成员函数

@public和@protected所修饰的成员变量,所派生的成员变量的修饰符和父类的修饰符相同,而且无法更改派生成员变量的修饰符

@property如果声明在.h文件,则其getter方法和setter方法都会继承到子类中

暴露在@interface{} @end之间的成员方法则可以被继承到子类

注意

Objective-C没有像C++一样可以对父类继承的声明符,因此如果是暴露在@interface{} @end之间的成员方法则可以被派生到子类,子类也可以把此方法派生到子类的子类并且不能对其做派生权限的更改,因此如果不确定有些方法是否要传给子类的子类则在Objective-C中使用Protocol协议

NSObject是任何类的直接或者间接父类

组合

类对象里面包括其他的类对象作为成员变量

需要注意问题:对象的引用

多态

相关概念

动态类型:OC在运行时才确定对象的实际类型

动态绑定:程序在执行时才确定对象调用的实际方法

多态

一种事物的多种状态。不同类的对象可以定义共享相同名称的方法,这个就是多态的表现形式

多态的条件

有继承关系,有方法重写,父类的声明变量指向子类对象

编写自己的类库

数据处理的类库

UI类库

第三方类库

Objective-C面向对象的编程的更多相关文章

  1. C++面向对象的编程

    C++面向对象的编程 目录 对C++面向对象编程的理解 声明和定义类 声明和定义 构造函数 析构函数 静态成员和静态变量 类实例化对象 对象的浅复制和深复制 继承 单继承 多继承 虚函数 类模板 其他 ...

  2. PHP面向对象(OOP)编程入门教程

    面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们就 ...

  3. python03 面向对象的编程01

    话不多说,直接进入正文: 编程思想: 我个人所了解的有2种,还有个函数式编程的概念模模糊糊(大概是把常用的代码封装成一个函数,重复调用即可,先认为就是这样吧) 1 面向对象:面向对象是把所有的事务物当 ...

  4. 【PHP面向对象(OOP)编程入门教程】1.什么是面向对象?

    面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成 ...

  5. 【PHP面向对象(OOP)编程入门教程】2.什么是类,什么是对象,类和对象这间的关系

    类的概念:类是具有相同属性和服务的一组对象的集合.它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分.在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属 ...

  6. php面向对象(OOP)编程完全教程

    摘自:http://www.php-note.com/article/detail/41 面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行P ...

  7. C语言面向对象风格编程

    前言 本文略谈C面向对象风格编程,如何使用过程式语言去模拟面向对象的特性?C面向对象的方式和形式很多,不一而足,本文的代码形式是模拟部分C++面向对象关键词并赋予其特性,这种方式对于初级程序员比较好理 ...

  8. IT第十九天 - 继承、接口、多态、面向对象的编程思想

    IT第十九天 上午 继承 1.一般情况下,子类在继承父类时,会调用父类中的无参构造方法,即默认的构造方法:如果在父类中只写了有参的构造方法,这时如果在子类中继承时,就会出现报错,原因是子类继承父类时无 ...

  9. Python 2.7 学习笔记 面向对象的编程

    python是一种面向对象的语言.本文介绍如何用python进行面向对象的编程. 首先我们说下对象和类,类是一种类型的定义,对象是类的实例. 一.内置对象类型(内置类) 其实我们前面已经大量用到了对象 ...

随机推荐

  1. 算法:最大子数组own

    转载标明出处:http://i.cnblogs.com/EditPosts.aspx?postid=4726782&update=1 暴力法: // maxValue.cpp : 定义控制台应 ...

  2. 两款较好的Web前端性能测试工具

    前段时间接手了一个 web 前端性能优化的任务,一时间不知道从什么地方入手,查了不少资料,发现其实还是蛮简单的,简单来说说. 一.前端性能测试是什么 前端性能测试对象主要包括: HTML.CSS.JS ...

  3. Delphi下使用OpenOffice+JodConverter+SWFtools进行文件转换

    目的:office文件转换为PDF或SWF,最终可使用Flexpaper调用adobe flash player进行浏览 放弃两个文件转换工具: 1.FlashPaper,转换出的文件由于自带工具栏, ...

  4. 远控软件VNC攻击案例研究

    欢迎大家给我投票: http://2010blog.51cto.com/350944           本文出自 "李晨光原创技术博客" 博客,谢绝转载!

  5. 关于对javascript 提升概念 的总结与思考。

    最近在看一本新买的书叫<你不知道的javascript上卷>..买到这本书也算是个巧合 不过真是物有所值.它对js的几个高级概念都做了非常深刻的描述和通过一些通俗易懂的方式来让我们理解.这 ...

  6. 门户级UGC系统的技术进化路线——新浪新闻评论系统的架构演进和经验总结(转)

    add by zhj:先收藏了 摘要:评论系统是所有门户网站的核心标准服务组件之一.本文作者曾负责新浪网评论系统多年,这套系统不仅服务于门户新闻业务,还包括调查.投票等产品,经历了从单机到多机再到集群 ...

  7. Windows 2003 服务器安全设置-批处理 (附参考链接)

    长期维护windows服务器终结出来的安全设置批处理与大家分享,复制以下全部内容用记事本另存为bat或者cmd执行 ===================分隔符号=================== ...

  8. [iOS微博项目 - 2.2] - 在app中获取授权

    github: https://github.com/hellovoidworld/HVWWeibo   A.发送授权请求 1.使用UIWebView加载请求页面 自定义一个继承UIViewContr ...

  9. MySQL 查看表结构简单命令。

    一.简单描述表结构,字段类型 desc tabl_name; 显示表结构,字段类型,主键,是否为空等属性,但不显示外键. 二.查询表中列的注释信息 select * from information_ ...

  10. hdu 2881 Jack's struggle(DP)

    对于所有的任务所在的地点按照时间排序,可以将其看成是一道非常简单的“天上掉馅饼”的题的二维版本. 将这些任务看成从天而降的馅饼,统计有哪些之前馅饼掉落的位置可以在两者时间差内到达该点的点,取其最大值. ...