一、OC语言的特点:封装,继承,多态;包含一个运行时系统;类库丰富。
二、面向对象
     1、概述
     OOP(Object Oriented Programming)面向对象编程。
     面向对象以事物为中心,完成某件事情都需要哪些事物来参与,参与该事件的事物都有哪些功能,完成该事件需要这些事物相互协作共同完成,并且完成该事件只是所有事物功能中其中的一个小功能。
    2、特点
     分析该问题需要参与的对象,各个对象的作用,完成该事件需要多个对象协同完成该任务。
     3、侧重点
     对象的设计。
     4、优点
     (1)面向对象具有良好的可扩展性和重用性;
     (2)面向对象可以降低我们代码的耦合度,提高代码的可移植性;
     (3)面向对象接近于日常生活和自然的思考方式,可以提高我们软件开发的效率和质量。
     5、面向对象编程的核心是转变考虑问题的⽅式。
三、类和对象的概念和区别
     1、类:具有相同特征和行为的事物的抽象。
     2、对象是类的实例,万事万物皆对象。 类是对象的类型。
四、类和对象的定义
     1NSLog:OC中的输出函数,输出内容会包括日期,时间,工程名,输出内容,内容输出完成后自动换行。
     2、@“”:OC中用来表示字符串
     3、.h文件里
     @interface…@end:类的接口部分(声明部分),成对出现。用来声明类的实例变量(特征)和方法(行为)。
     @interface     Person :NSObjcet (Person表示类名,:表示继承关系,:后面的类名表示父类名,NSObject 基类)。
     4、.m文件里     
     @implementation和@end成对出现,类的实现部分。
     @implementation Person (Person 表示类名)。实现Person类中定义的方法
     5、面向对象的核心思想是类和对象。
     6、OC中类的定义分为两个部分:接口部分和实现部分。
     7、 声明实例变量,命名以下划线开头。OC中的类型,声明实例变量的时候后面加*,C语言中的基本数据类型,类型后面不需要加*,首字母小写,遵循驼峰命名法。
     8、定义方法:OC中的方法分为两类:
     第一种,’+’ 号方法(类方法) 由类名调用;第二种,’-’ 号方法(对象方法或者称为实例方法)由对象调用;定义时将返回值类型用()括起来
     9、创建对象
    (1)定义类
     (2)开辟存储空间
     (3)初始化
           第一种
         Person *person1 = [Person alloc];
    person1 = [person1 init];
    第二种
         Person *person2 = [[Person alloc] init];(最常用的)
       第三种
       Person *person3 = [Person new];  (new 等同于 alloc 和 init)
       (OC中使用[ ]给方法发送消息)
        [person1 eat]; ( 使用对象名去调用对象方法)
        [person2 sleep];
        [Person study]; (使用类名去调用类方法)
     10、instancetype和id的区别(instancetype 实例对象)
          (1)instancetype可以返回和方法所在类相同类型的对象,id只能返回位置类型的对象。
          (2)instancetype只能作为返回值和参数,id还可以用来定义变量
          (3)instancetype会告诉编译器当前的类型,但id对于编译器却是无类型的,
调用任何方法都不会给出错误提示。
          (4)对于init方法,id和instancetype是没有区别的。因为编译器会把id优化成instancetype。当明确返回的类型就是当前Class时,使用instancetype能避免id带来的编译不出的错误情况。 
          (5)id和instancetype都可以作为方法的返回值类型,都表示任意类型的对象
五、实例变量的操作
     1、@public 公共的 外界可以直接访问,可以被子类继承
     2、@protectde 受保护的 外界无法访问,可以被子类继承
     3、@private 私有的 外界无法访问,不可以被子类继承
     4、实例变量没有指定可见度的情况下,默认是@protected
六、方法
     1、setter方法(设置器)
          (1)作用:提供一个方法给外界设置成员变量,可以在方法里面对参数进行相应的过滤。
          (2)命名规范
               1)方法名必须以set开头;
               2)set后面跟上成员变量的名称,成员变量的首字母必须大写;
               3)返回值一定是void;
               4)一定要接收一个参数,而且参数类型和成员变量类型一致;
               5)形参的名称不能跟成员变量名一样。 
     2、getter方法(访问器)
          (1)作用:返回对象内部的成员变量。
          (2)命名规范
               1)肯定有返回值,返回类型肯定与成员变量类型一致;
               2)方法名为成员变量名去掉下划线_,成员变量在定义时,一般以下划线_开头;
               3)不需要接收任何参数
     3、定义实例变量的setter和getter方法:实例变量如果是受保护类型的,外界无法直接访问,外界如果要访问实例变量,需要本类提供方法,外界访问的话直接调用相应的方法即可。外界操作实例变量通常对实例变量赋值和取值操作:setter:本类提供的用来给实例变量赋值的方法;getter:本类提供的用来给实例变量取值的方法
     4、多个参数的方法名
          setHobby: ()hobby weight: ()weight address: ()address isMarried:()isMarried;

iOS学习之Object-C语言类和对象的更多相关文章

  1. iOS学习08之C语言内存管理

    本次主要学习和理解C语言中的内存管理 1.存储区划分 按照地址从高到低的顺序:栈区,堆区,静态区,常量区,代码区 1> 栈区:局部变量的存储区域 局部变量基本都在函数.循环.分支中定义 栈区的内 ...

  2. iOS学习07之C语言指针

    本次随笔主要是为了学习和理解C语言中的指针,指针树状图如下: 1.访问数据的两种方式 1> 直接访问:定义变量后,直接访问变量 ; printf("a = %d\n", a) ...

  3. 零基础入门学习Python(36)--类和对象:给大家介绍对象

    知识点 Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前 ...

  4. C++学习43 输入输出有关的类和对象

    输入和输出是数据传送的过程,数据如流水一样从一处流向另一处.C++形象地将此过程称为流(Stream).C++的输入输出流是指由若干字节组成的宇节序列,这些宇节中的数据按顺序从一个对象传送到另一对象. ...

  5. C++学习日记(一)————类与对象

     C++远征之封装篇(上)笔记 所有内容都是听课笔记,愿课堂视频如下: C++远征之封装篇(上)-慕课网http://www.imooc.com/learn/382 类和对象 1 什么是类,什么是对象 ...

  6. Java学习笔记(二)——类和对象

    [1]类是模子,确定对象将会拥有的特征(属性)和行为(方法). [2]类的特点:类是对象的类型: 具有相同属性和方法的一组对象的集合. [3]属性:对象具有的各种特征(每个对象的每个属性都拥有特定值) ...

  7. Java学习笔记【四、类、对象、接口】

    编程语言的发展 机器语言 过程语言 面向对象编程--封装.继承.多态 关键字 extends implements override overload super this static abstra ...

  8. Python学习笔记(六)——类和对象

    1.self的用法 全面理解self 2. 继承 子类继承父类,自动拥有父类的全部方法 >>> class Animal: def run(self): print('Animal ...

  9. python学习笔记(24)-类与对象

    #类与对象 #python类的语法 关键字 class #class 类名 类名的规范是:数字字母下划线组成,不能以数字开头 首字母大写 驼峰命名 #类属性 放在类里面的变量值 #类方法 放在类里面的 ...

随机推荐

  1. No.004 Median of Two Sorted Arrays

    4. Median of Two Sorted Arrays Total Accepted: 104147 Total Submissions: 539044 Difficulty: Hard The ...

  2. 关闭GS选项,解决注入后崩溃

    利用CreateRemoteThread向进程注入远程代码时,一般会有以下两种做法: 利用LoadLibrary在目标进程加载指定的DLL 将代码复制到目标进程,然后启动这段代码 上面的第二种方法其实 ...

  3. python的文件操作方法

    python中的文件对象:文件对象不仅可以用来访问普通的磁盘文件, 而且也可以访问任何其它类型抽象层面上的"文件". 一旦设置了合适的"钩子", 你就可以访问具 ...

  4. 如何用手机维护Mysql数据库

    如何用手机维护网站数据库 身边很多人都在拿ipad或iphone来玩儿游戏或听歌,大多数人认为它们就是个娱乐设备,在我看来它们同样可以帮助我们更加快捷的工作,我用手机遥控单反.用手机控制PPT的播放. ...

  5. 【spring 4】AOP:动态代理

    一.动态代理简介 动态代理与普通代理相比较,最大的好处是接口中声明的所有方法都被转移到一个集中的方法中处理(invoke),这样,在接口方法数量比较多的时候,我们可以进行灵活处理,而不需要像静态代理那 ...

  6. JS常用的设计模式(7)—— 外观模式

    外观模式(门面模式),是一种相对简单而又无处不在的模式.外观模式提供一个高层接口,这个接口使得客户端或子系统更加方便调用.用一段再简单不过的代码来表示 var getName = function() ...

  7. Something wrong with EnCase index search in Unallocated area

    hi, My EnCase version is v7 and I found a terrible issue about index search in Unallocated area. Wit ...

  8. hdu2602

    01-bag #include <stdio.h> #include <math.h> #include <string.h> int main(){ int t; ...

  9. Java c3po

    1.准备通用类 (引用:c3p0-0.9.1.2.jar) package nankang.test; import java.sql.Connection; import com.mchange.v ...

  10. java编程的78条黄金法则

    创建和销毁对象 1.考虑用静态工厂方法(返回类的实例的静态方法)代替构造器2.遇到多个构造器参数时要考虑用构造器3.用私有构造器或者枚举类型强化Singleton属性4.通过私有构造器强化不可实例化的 ...