黑马程序员————第十九天

原创 2015年07月08日 10:07:10

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

OC中self相当于C++java中的this指针

super发送消息将方法实现分发给其父类


self应用场景

1.用在类方法

2.用在对象方法中

3.访问成员变量

4.self在OC的内存管理特殊使用



self在对象方法中时期只带调用当前方法的对象

@implementation Person

-(void) run

{

}

-(void) eat:(NSString *)foodName

{

[self run];

}

@end




2.self在类方法使其指带当前类


[Person class];

返回的就是的当前类




继承

在子类的文件中需要导入需要继承的头文件


1.子类不能定义和父类同名的实例变量但可继承父类的

OC支持隔层继承

2.集成体系的调用顺序为层层往上找


实例变量作用域

public  任意程序集

protected 同类和派生类

private 同一类


@package (框架级别的)作用域介于私有和公开之间

只要处于用一个框架中就可以直接通过变量名访问


@private  能继承,不能被外部方法访问


类的声明中默认的为@protected




OC中的私有变量

.m文件也可声明成员变量

真正的私有变量只能在当前类使用,不能被继承,也不能访问



在.h中没有声明(.h文件看做是对外的一个接口)

在.m实现此时方法称为私有方法

可用[self 方法名]访问私有方法



description方法

Dog *d=[Dog new];

NSLog(@"%@",d); //打印对象,调用了对象的description方法

打印:<Dog:0x1001002e0>

重写父类的description时千万不要在description方法中同时使用%@和self造成死循环


多态

不同对象以自己的方式响应同名方法的能力


多态条件有继承关系,方法重写

Animals *anl=[Dog new];

[(Dog *)anl eat];

OC运行时加入新的数据类型和新的模块:动态类型识别,动态绑定,动态加载

存在多态,父类可访问子类的方法,否则不可以。



获取类对象

Class c1=[Person class];

Person *p=[c1 new]; //使用类对象创建实例对象[c1 test];调用的是类方法



SEL类型

全称selector 表示方法存储位置


[p test] 寻找方法的过程

1.把test方法名包装成sel类型的数据

2.根据sel数据找到对应的方法地址

3.根据方法地址调用相同的方法

4.注意:在这个操作中的有缓存,第一次一个找一个之后直接使用


每个方法都有_cmd表示当前方法

SEL s1=@selector(test);

[p performSelector:s1];


Person  *p=[Person new];

类对象的存储细节

首先通过p指向额地址找到实例对象,之后通过_isa指针的地址找到person类对象再通过类对象的_isa指针找到Person的代码区空间。之后通过SEL找到需要的方法。












【黑马程序员】IO流(一) 第十九天

-------  android培训、java培训、java学习型技术博客、期待与您交流! ---------- 知识点 01)System /* * System:类中的方法和属...

黑马程序员--Java基础学习(IO流)第十九天

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- Java基础学习(IO流)第十九天 一,字符流缓冲区 缓冲区的出现提高了数据的...

黑马程序员--- 学习笔记(第十九天)

字符流缓冲区" BufferedReader,BufferedWriter 缓冲区的出现是为了提高流的操作效率而出现的,所以在创建缓冲区之前,必须要 先有流对象. BufferedWriter...

黑马程序员-第十九天( IO(Input Output)流)

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------                     ...

黑马程序员--第十九天:io流第二天

---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------   import java.i...

黑马程序员_java的异常处理(对第九课—第十课的异常总结)

------- android培训、java培训、期待与您交流! ---------- 通过今天对java语言异常的学习,我来给自己的学习内容做下简单直白的总结: 首先,我来总结下...

黑马程序员————学习日记【10】 【泛型、Map和Collections】

------- android培训、java培训、期待与您交流! ----------     Set:无序,不可以重复  |--HashSet:数据结构是哈希表,线程是非同步的    ...

黑马程序员————C语言基本运算

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1,基本算术运算符 1)加法运算符“+”:加法运算符为双目运算符,即应有两个量参与加法运算。如a...

黑马程序员-————学完String后的一点认识。

---------------------- android培训、java培训、期待与您交流! ----------------------   先做个这样的理解,基本数据类型:int,short...

黑马程序员————OC基础——定义OC的类和创建OC的对象

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- 下面通过创建一个Student类来演示类的创建过程以及对象的创建 1. 类的声明:通过声明确定这...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员————第十九天
举报原因:
原因补充:

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