点语法与构造方法
1,点语法
1.所谓的点语法就是通过对象名.去掉下划线的实例变量
点语法是编译器的特性,
编译器遇到点语法时就会自动把点语法替换成set/get的方法
2.调用首先是创建一个对象
指针 . 实例变量 =赋值
注意:
千万不要把点语法看做是访问类的实例变量
点语法的根本基础 是set和get方法,如果没有set和get方法,将不能使用点语法。
在set方法中不能使用self.XX=XXX;不然会造成无线循环
在get方法中也不能使用返回self .xxx;
2,关键字的使用
1,@property就是关键字来代替在.h文件中的set,get
格式;
@property 类型 实例变量名
@property int age;
同种类型可以用逗号
实例变量必须是下划线开头才能被子类继承
2,@synthesize 就是来代替set,get方法的只在.m文件中
格式;
@stnthesize 实例变量
3,重新实现get,set方法就是在.m函数中再写一遍是、set的格式就是手动实现
但是set和get只能出现一个,实现其中一个
4,id的使用
nsobiect可以指向任何对象,可以调用子类的方法 但是需要强转一下
id 类型,可以使用 id类型,定义变量,变量的特点:万能指针
id 类型的作用,它可以指向任何对象,动态的给id变量赋值
不足:在编译的时候,无法确定是否能够响应这个方法
id 就是一个类型的 万能类型
id 指针类型
指针类型 =[类 new];
[指针 行为
];
4构造方法
1,就是给对象进行初始化的方法
就是init 初始化对象
默认的初始化为0
重写构造方法的目的就是
创建完成后会有一些默认的值
2,为什要初始化父类
// 子类继承了父类
// 当子类重写了父类的方法以后,子类调用init方法的时候
// 只调用子类的init,不掉要父类的init
// 为了保证父类正常的初始化完成,子类先让父类初始化
// self = [super init]; //初始化父类
//疑问2:为什么要给self 重新赋值
// 1) 父类初始化的时候,有可能release self指向的空间(可能性非常小
// 如果释放掉空间了 self = nil)
// 问题:父类进行初始化怎么能够释放掉 self指向的空间
// 父类中的self 和子类中的 self 指向的时同一个空间
格式:if (self =[super init ]){
初始化子类的东西
}
return self
返回self ----> alloc 完成的那个对象