objective-c
编译: clang - fobjc-arc HelloWord.m -o helloword
对象的空间分析
对象:栈上存储指针(引用),堆上的存储真正的对象。
值:实例(值)内存直接储存于栈空间
创建对象:
RPoint*rp1=[[rpoint alloc]init] 创建了对象
rp1.x=0 访问了属性
[rp1 print] 发送了消息
1.数据成员:
@interface Employee :NSobject 定义方式
@property NSString * firstName; (属性)
编译器为属性生成三个东西 setter getter 实例方法
类外不可以访问实例变量,只能访问属性
在类外一律使用属性来访问,类内大多数也通过self使用属性,也可以下划线访问,只有以下情况使用实例变量来访问: 初始化器 析构器 自定义访问器方法
认识方法
成员函数 (objc 方法)
—(Bool)is EqualToPoint :(BLNPoint *)point;
减号是实例方法 加号是类方法
方法是累的成员函数,表达实例行为或类型行为;
动态消息分发:方法调用通过运行时动态消息分发实现,在对象上调用方法又称为“像对象发送消息”
方法参数
如果参数类型为值类型。则为传值方式,如果参数类型为引用类型。则为传指针方式。
初始化器
1,对象初始化器 -(id)init 可以重载多个
2,类型初始化器 +(void)initialize 只能有一个
析构器:用于释放对象拥有的资源,无返回值得函数
对象初始化器
初始化对象实例时 init 通常和alloc 搭配使用
类初始化器
+(void) initialize
{ if (self= = 【Book class】)
}
Book*b1 = [[Book alloc ]init];
=》book*b2=[Book new]; new相当于调用 alloc/init 的无参数版本
在对每个类使用之前被系统自动调用,且每个进程周期中只被调用一次
继承
每一个类智能有一个基类,子类自动继承基类的1,实例变量 2,属性 3,实例方法 4 类方法
is a
成员复用 子类复用基类成员
类型抽象:讲子类当做父类来使用
多态
在子类的代码中,可以使用super来调用基类的实现
1,self 具有动态性 可以指向不同子类
2,super没有多态性,仅指向当前父类
***在父类里面调用了一个方法,从A方法中调用B,B在子类被override,用子类调用A方法时,因为B被override了,所以会调用B方法
调用实际类型,不调用声明类型