一、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. 洛谷P1268 树的重量

    P1268 树的重量 85通过 141提交 题目提供者该用户不存在 标签树形结构 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 有这种情况吗!!!! 题意似乎有问题 题目描述 树可以用来表 ...

  2. 开始记录blog

    将自己的总结.新的记录下来,形成习惯,为以后的温故知新

  3. 安装 centos7 注意事项

    最近一直没有写博客,把之前的折腾记录写下. 1 下载好镜像文件,刻录光盘. 2  用DVD安装CENTOS7 3 有些处理器不支持Cento7安装,需要重新编译内核文件.我不懂 . 我用的ACER  ...

  4. ASP.NET状态保持:ViewState

    ViewState是ASP.NET的.aspx页面特有的,是页面级的状态保持.一般用在内网系统和网站后台. namespace WebFormTest.TestCollect { public par ...

  5. 设置DataGridView 显示自己添加编辑的列名,不动态显示数据库本身

    设置DataGridView 显示自己添加编辑的列名,不动态显示数据库本身. 方法: (1)界面操作,把DataGridView控件拖放在窗体中,就看到DataGridView控件的右上角有个小三角, ...

  6. C#关于一个程序,只可以有一种实例的方法

    方法一:使用线程互斥变量. 通过定义互斥变量来判断是否已运行实例.把program.cs文件里的Main()函数改为如下代码: 说明:程序中通过语句 System.Threading.Mutex ru ...

  7. Winform菜单之ContextMenuStrip

    ContextMenuStrip实际就是上下文菜单,就是右键单击某个窗体或者控件后出来的菜单. 从工具栏里拖一个出来放在窗口上就行 然后进行一系列的设置,设置方法跟前面的MenuStrip基本是一样的 ...

  8. Oracle删除表主键语句

    删除无名主键语句: SELECT * FROM USER_CONS_COLUMNS WHERE TABLE_NAME = '表名'; ALTER TABLE 表名 DROP CONSTRAINT 主键 ...

  9. 使用notiy和wait模拟阻塞队列

    public class MyQueue { //定义一个存储数据的容器 private LinkedList<Object> list = new LinkedList<Objec ...

  10. 学习c语言的第9天

    #include <stdio.h> int main() { float sum=0,wage=0; int i=1; int num; printf("+++平均工资统计程序 ...