OBJ-C实例变量修饰符;私有变量;私有方法;description;多态;点语法学习笔记
2016-04-29 04:04
323 查看
==============================================================================
实例变量修饰符;私有变量;私有方法;description;多态;点语法
==============================================================================
实例变量的作用域
访问修饰符:
public:公开的,在任何电放通过实例对象都可以访问;任意程序集可用;
protected:受保护类型,表示只能在当前类和子类中访问;同一类和派生类可用;
private:私有的,表示只能在当前类中被访问;同一类可用;
------------------------------------------------------
注意:
1.子类可以继承父类的所有的实例变量和方法;但是,不是所有的都可以访问;
2.在@interface @end之间声明的成员变量如果不坐特别的说明,那么其默认是@protected。
==========================================================================
OC中的私有变量
例:int m = 10;
@implementation
@end
上例中定义的m即在.m中定义实例变量,
为纯私有的变量,该变量只能在当前类中使用,不能被子类继承,也不能被访问。
-----------------------------------------------------------------------------
OC中的私有方法
在.h中没有声明,在.m中实现的方法,为私有方法。
私有方法可以在实现中用self访问;
============================================================================
description方法介绍及重写
description方法概述
Dog * dog = [[Dog alloc] init];
NSLog(@"%@",dog);
打印出来默认为 Dog:dog的首地址。是对象dog的信息
-------------------------------------------------------------------------
description打印类信息
Dog * dog = [[Dog alloc] init];
NSLog(@"%@",[dog class]);
-------------------------------------------------------------------------
description陷阱
千万不要在description方法中同时使用%@和self,程序会陷入死循环。
==============================================================================
多态的概念和条件
什么是多态?
不同的对象以自己的方式响应相同名称方法的能力成为多态。
--------------------------------------------------------
多态的条件
1.有继承关系;
2.有方法重写;
3.父类的声明变量指向子类对象;
代码体现:用父类类型的指针指向了子类对象,这就是多态。
-------------------------------------------------------------------
多态的优点
多态的主要好处就是简化了编程接口,它容许在类和类之间重用一些习惯性的命名,而不用为每一个新加的函数命名一个新名字。这样,编程接口就是一些抽象的行为的集合,从而和实现接口的类区分开。
多态也使得代码可以分散在不同的对象中而不用试图在一个函数中考虑到所有可能的对象。这样使得您的代码扩展性和复用性更好一些。当一个新的情景出现时,您无需对现有的代码进行改动,而只需要增加一个新的类和新的同名方法。
---------------------------------------------------------------------------
多态的实现
简单来说,就是父类的同一个方法声明,但父类和子类各自以自己的方式实现,而且方法名相同。
多态的使用:Animal * p = [Dog new];(父类指针指向子类对象)
---------------------------
多态的原理
动态绑定:
1. 动态类型能使程序直到执行时才确定对象所属类型
2.
动态类型绑定能使程序直到执行时才确定要对对象调用的实际方法
3. OC不同于传统程序设计语言,它可以再运行时加入新的数据类型和新的程序模块:动态类型识别,动态 绑定,动态加载
Id类型:通用指针类型,弱类型,编译时不进行类型检查
----------------------------------------------------------------
多态的注意点:
1.如果存在多态,父类是可以访问子类特有的方法;
=============================================================================
类的本质:其实是个对象
类对象属于class类型
类对象的获取方法:
1.通过实例对象来获取;
Class c1 = [d class];
2.通过类名来获取类对象;
Class c2 = [Dog class];
===========================================================================
SEL类型
例: Person *p = [[Person alloc] init];
[p test];
寻找方法的过程:
1.首先把test这个方法名包装成sel类型的数据;
2.根据sel数据找到对应的方法地址;
3.根据方法地址调用响应的方法;
4.注意:在这个操作过程中有缓存,第一次找的时候是一个一个的找,非常耗性能,之后再用到的时候 就直接使用;
==================================================================================
点语法介绍和使用:
例如:1.
p.age = 18;会自动替换成[p setAge:18],即调用set方法;
不是直接访问,其实还是通过对象方法间接访问。
2.
int a = [p age];
NSString *s = [p name];
注意,此处的p.age出现在了等号的右侧,此时会把p.age替换成[p age],即调用get方法。
实例变量修饰符;私有变量;私有方法;description;多态;点语法
==============================================================================
实例变量的作用域
访问修饰符:
public:公开的,在任何电放通过实例对象都可以访问;任意程序集可用;
protected:受保护类型,表示只能在当前类和子类中访问;同一类和派生类可用;
private:私有的,表示只能在当前类中被访问;同一类可用;
------------------------------------------------------
注意:
1.子类可以继承父类的所有的实例变量和方法;但是,不是所有的都可以访问;
2.在@interface @end之间声明的成员变量如果不坐特别的说明,那么其默认是@protected。
==========================================================================
OC中的私有变量
例:int m = 10;
@implementation
@end
上例中定义的m即在.m中定义实例变量,
为纯私有的变量,该变量只能在当前类中使用,不能被子类继承,也不能被访问。
-----------------------------------------------------------------------------
OC中的私有方法
在.h中没有声明,在.m中实现的方法,为私有方法。
私有方法可以在实现中用self访问;
============================================================================
description方法介绍及重写
description方法概述
Dog * dog = [[Dog alloc] init];
NSLog(@"%@",dog);
打印出来默认为 Dog:dog的首地址。是对象dog的信息
-------------------------------------------------------------------------
description打印类信息
Dog * dog = [[Dog alloc] init];
NSLog(@"%@",[dog class]);
-------------------------------------------------------------------------
description陷阱
千万不要在description方法中同时使用%@和self,程序会陷入死循环。
==============================================================================
多态的概念和条件
什么是多态?
不同的对象以自己的方式响应相同名称方法的能力成为多态。
--------------------------------------------------------
多态的条件
1.有继承关系;
2.有方法重写;
3.父类的声明变量指向子类对象;
代码体现:用父类类型的指针指向了子类对象,这就是多态。
-------------------------------------------------------------------
多态的优点
多态的主要好处就是简化了编程接口,它容许在类和类之间重用一些习惯性的命名,而不用为每一个新加的函数命名一个新名字。这样,编程接口就是一些抽象的行为的集合,从而和实现接口的类区分开。
多态也使得代码可以分散在不同的对象中而不用试图在一个函数中考虑到所有可能的对象。这样使得您的代码扩展性和复用性更好一些。当一个新的情景出现时,您无需对现有的代码进行改动,而只需要增加一个新的类和新的同名方法。
---------------------------------------------------------------------------
多态的实现
简单来说,就是父类的同一个方法声明,但父类和子类各自以自己的方式实现,而且方法名相同。
多态的使用:Animal * p = [Dog new];(父类指针指向子类对象)
---------------------------
多态的原理
动态绑定:
1. 动态类型能使程序直到执行时才确定对象所属类型
2.
动态类型绑定能使程序直到执行时才确定要对对象调用的实际方法
3. OC不同于传统程序设计语言,它可以再运行时加入新的数据类型和新的程序模块:动态类型识别,动态 绑定,动态加载
Id类型:通用指针类型,弱类型,编译时不进行类型检查
----------------------------------------------------------------
多态的注意点:
1.如果存在多态,父类是可以访问子类特有的方法;
=============================================================================
类的本质:其实是个对象
类对象属于class类型
类对象的获取方法:
1.通过实例对象来获取;
Class c1 = [d class];
2.通过类名来获取类对象;
Class c2 = [Dog class];
===========================================================================
SEL类型
例: Person *p = [[Person alloc] init];
[p test];
寻找方法的过程:
1.首先把test这个方法名包装成sel类型的数据;
2.根据sel数据找到对应的方法地址;
3.根据方法地址调用响应的方法;
4.注意:在这个操作过程中有缓存,第一次找的时候是一个一个的找,非常耗性能,之后再用到的时候 就直接使用;
==================================================================================
点语法介绍和使用:
例如:1.
p.age = 18;会自动替换成[p setAge:18],即调用set方法;
不是直接访问,其实还是通过对象方法间接访问。
2.
int a = [p age];
NSString *s = [p name];
注意,此处的p.age出现在了等号的右侧,此时会把p.age替换成[p age],即调用get方法。
相关文章推荐
- Objective-C的内省(Introspection)用法小结
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
- Objective-C中使用NSString类操作字符串的方法小结
- Objective-C中NSNumber与NSDictionary的用法简介
- Objective-C中NSLog输出格式大全
- 浅析Objective-C的程序结构及面向对象的编程方式
- 全面解析Objective-C中的block代码块的使用
- Swift调用Objective-C编写的API实例
- Swift、Objective-C、Cocoa混合编程设置指南
- Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍
- Swift调用Objective-C代码
- Objective-C中字符串NSString的常用操作方法总结
- 以实例讲解Objective-C中的KVO与KVC机制
- 简介Objective-C解析XML与JSON数据格式的方法
- 浅析Objective-C中分类Category的使用
- 举例讲解Objective-C中@property属性的用法
- Objective-C编程中语句和变量的一些编写规范建议
- 理解Objective-C的变量以及面相对象的继承特性
- 简单讲解Objective-C的基本特性及其内存管理方式
- Objective-C中编程中一些推荐的书写规范小结