学习笔记10-OC类的特性

原创 2015年11月21日 14:54:24

1     NSString 类

处理字符串的类。

1) 创建常量字符串

NSString  *str =@”abc“;  //str 为指针变量  ”abc“为字符串常量

       NSString  *str=[NSString  new];//使用类new方法创建字符串对象

          str=@“abc“;

       NSString  *str=[NSString  stringWithFormat:@”xxx%d“,i];//使用类方法格式化创建字符串。

NSString  *str1=[[NSString  alloc] initWithString:str]; // 先分配空间之后用str的值初始化 之后把地址返回给str1.

2)NSString   字符串长度计算

       类方法 length

[str length]; //返回值类型为NSUInteger  无符号整形 输出用 ld

OC中

英文和中文都是一个字符 占一个字节。

C 中 中文占3个字节。

2     多文件开发

把声明和实现分开把声明写在.h中 实现在 .m中 在.h中添加import  .m 在主函数中添加头文件。

还可以把 类 按类别放到不同的文件夹中。

3     类方法(+)

    优点:节省内存  提高效率 作为工具方法

对象方法使用的时候必须创建对象,使用对象调用。

类方法使用的时候不需要创建实例对象,不依赖任何对象方法和成员变量。

方法定义和对象方法相似只是前面是 + 号。

调用和对象方法一样。

 

注意

1)    类方法可以和对象方法同名,调用者不一样。

2)    类方法可以继承。

3)    声明和实现同对象方法类似。

4)    类方法只能通过类调用。直接到代码区找类方法。

 

 

4 对象方法和类方法区别

对象方法

1)对象方法可以在方法中创建对象,使用新创建的对象调用对象方法

2)对象方法可以通过 self 调用该类的对象方法。

3)对象作为方法的参数传递过来,可以使用传递过来的对象调用对象方法

类方法

1)类方法可以调用其它的类方法

2)可以使用self 调用其他类方法

3) 类方法中可以调用对象方法  对象作为参数传递或者在类方法中创建对象。

4)类方法不可以调用自身。会成死循环。

5 匿名类

       在方法需要使用调用类方法的时候生成并调用。

       [[Personnew] goHome :[Car new]];

             

6  封装

       作用:隐藏类的实现隐藏数据 掌握对实例变量的管理权。

       原理:实例变量默认为只可被当前类对象访问。

       实现步骤

1)    设置实例变量的setter和getter方法。类似java的set和get。

使用set方法对成员变量赋值,使用get方法获得成员变量的值。

set方法命名规范

a 必须以set开头

b set后面跟成员变量的名称首字母大写。(去掉下划线)。

c 返回值为void。

d 一定要接收一个参数,参数类型和成员变量的类型一致。

e 形参名不能和成员变量名一样。一般去掉下划线的成员变量名。

f  set方法是一个对象方法。

g 实现中一定要给实例变量赋值。

 

              get方法的命名规范

                     a一定要有返回值,返回值类型与成员变量的类型一致

                     b方法名和成员变量名一样。(一般为去掉下划线的成员变量)

                     c 没有参数。

                     d  是对象方法

                     e  实现中一定返回实例变量值。

7 对象和对象关系

1) 组合模式(部分-整体)相同基类的对象组合到树形结构中。

2) 依赖关系 A对象作为B对象的局部变量或者方法的形参 ,B 依赖于A .A和B是依赖关系

耦合度:修改一个对象时,对另一个对象的影响程度。

低耦合:修改一个对象时,对另一个对象的影响小

高内聚:一个对象仅仅做自己相关的事情。

3) 关联关系

一个对象拥有另一个对象

 

8 方法的重载

       同名方法不同参数个数和类型。

       OC中没有方法的重载

9  OC中static关键字。

       static不能修饰实例变量。

       可以在.m文件中作为普通变量使用。只能在本文件中使用。

10 self和super

       self相当于java的this指针 表示当前对象。

      

self应用

谁调用当前方法就指代谁

1) 在对象方法中使用。指代调用当前对象方法的对象。

2) 在类方法中指代当前类。[对象 class]返回当前类(对象)

3) self修饰变量 用以区分实例变量和普通变量

              super 调用父类方法。

11 类的继承和派生

       继承就是子类拥有父类的方法和属性。

       继承的实现

1) 导入父类的头文件

2) 声明子类的时候继承父类

基类和派生类的关系

              派生类可以继承父类(基类)的方法和属性还可以拥有自己的属性和方法。

              注意

1)基类的私有属性不能被继承。

              2)OC中是单继承,一个子类只能继承一个父类。

              3)继承的合理性。可以拥有父子关系。

       方法的重写

子类重新实现父类的方法。不需要声明,已经继承。

 

       继承的注意事项

1) 子类不能定义父类同名变量

2) 单一继承

3) 可以多层继承。

12 实例变量修饰符合作用域

       修饰符

              @public 公有的   任意程序

              @protected 受保护的  同一类或者派生类 子类可以使用

              @private 私有的         同一类中 子类可以继承,不能访问和使用

       修饰符的作用域

声明时(.h):从修饰符出现的地方开始到遇到下一个修饰符或结束。默认为protected。

              实现时(.m):声明的变量都是私有的 不能继承 不能访问。

       私有方法

       .h中没有声明,但是在.m中实现的方法。子类不能继承,不能实现。子类可以通过共有方法调用私有方法。

13 description方法

              NSLog(@”%@”,对象);//打印对象的内容

              实际上调用NSObject类的description方法 打印对象信息。

       重写description方法

-      (NSString *)  description{

NSString *str=@“”;// 可将打印的信息以字符串的形式赋值给str

return   str ;

}

 

14 多态

       多态:某一类事物的多种形态。

       程序中多态:不同的对象以自己的方式响应相同的方法的能力。每个对象都可以有自己的同名方法。

       多态的条件

              有继承关系,有同名方法的重写。   

               基类 * 对象名=[子类 new];//父类的指针指向子类的对象。

       多态的优点

              简化编程借口。容许类和类之间的同名方法。

       多态的实现

1) 基类定义方法并实现(-run())

2) 派生类重写父类的同名方法(-run())

3) 父类指针指向子类对象

基类 * 对象名=[子类 new];

4) 父类指针调用子类方法

[对象名 方法];

       多态的原理

              动态类型可以使直到程序运行时才确定对象所属的类型。

              动态类型绑定能使程序执行时才确定对象调用的实际方法。

              注意

存在多态时,父类可以访问子类特有方法。需要强制类型转换。将父类指针类型转换为子类指针类型。

15 类的本质

              类的本质还是类(类对象)。是另外一个类的对象。

              类对象是一种数据结构,存储的是类的基本信息:类大小,类名,类版本以及消息与函数的映射表。

              类对象代表类。

              class代表类对象,类方法属于类对象。

              Person  *p =[Person]

              p 是Person实例对象

              Person 是class类的类对象

类对象获取

1) 通过实例对象获取

Class  c=[p class];  Person

2) 通过类名对象

Class c =[ Person class];

              类对象的使用

                     可以创建对象Person *p= [c  new]; c可以当Person用

                     可以调用类方法

16类对象的存储

类对象(Person)也在堆区存储。_isa指向代码区。

实例对象(p)_isa 指向类对象的地址。

P指向类对象。

SEL

对方法的包装,表示方法的存储位置。

1) 当实例对象调用方法的时候会把这个方法包装成SEL类型的数据

2) 根据SEL找到对应的方法地址。

3) 根据方法地址调用方法。

使用

Person *p=[Personnew];  // Person类中有方法–eat()

 

SEL  sel =@selectot(eat);

[ p performSelector :sel ]; //响应方法

      

      

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

学习笔记2-C语言的运算符和程序结构

一  运算符 1 运算符及分类   运算符是特定的算术或者逻辑符号。   1)按功能分类 算术运算符、关系运算符、逻辑运算符和按位运算符。 2)按操作数的个数分类 单目运算符、双目运算...

学习笔记4-C语言数组和字符串

数组的基本概念及分类       数组:把具有相同类型的若干变量安装有序的形式组织起来。这些按序排列的同类型数据的集合称为数组。        数组元素:构成数组的数据。每个数组元素有相...

学习笔记9-OC入门基础

1     import 引入头文件 可以防止重复包含 include 需要预处理指令。 2     NSLog    参数的是NSString 类型对象 print...

C语言中Union类型的使用方法

使用C语言时,常常使用struct,对于union类型却几乎没有用过,只知道它是联合类型,各字段共享一块内存,实际应用中却不知道它的具体用途。 今天读《编程卓越之道》中看到有对其使用的简单介绍,记录...
  • feimor
  • feimor
  • 2011-10-10 10:32
  • 6739

学习笔记3-C语言函数进制

函数的概述   C语言程序是由函数组成的。函数是C程序的基本模块,通过函数模块的调用实现特定的功能。 函数的优点:提高程序的可读性,提高开发效率和提高代码的重用性。   1函数分类 ...

(C语言)共用体union的用法举例

以前在学校学习C语言的时候一直搞不懂那个共用体union有什么用的。工作之后才发现它的一些妙用,现举例如下:1. 为了方便看懂代码。比如说想写一个3 * 3的矩阵,可以这样写:[注:下面用红色部分标记...

自适应滤波

对于一些事先并不知道所需要进行操作的参数的应用,例如一些噪声信号的特性,要求使用自适应的系数进行处理。在这种情况下,通常使用自适应滤波器,自适应滤波器使用期望和反馈来综合调整滤波器系数以及频率响应。常...

联合体(union)的使用方法及其本质

6.本质&进阶: 根据union固定首地址和union按最大需求开辟一段内存空间两个特征,可以发现,所有表面的定义都是虚的,所谓联合体union,就是在内存给你划了一个足够用的空间,至于你怎么玩~它...

学习笔记8-C语言文件

文件        文件:存储在外部介质上的数据集合。集合的名称叫文件名。 作用:文件可以保存程序运行结果。   编码分类:ascii文件(文本文件)和二进制文件。 文件操作原理: 1) 文件缓冲区:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)