Mark 01 匿名对象
1.匿名对象
- 创建一个对象,不使用指针存储这个对象的地址
- 调用new方法去创建对象,但是没有使用指针来接收这个方法的返回值,这个对象就叫做匿名对象
2.如何使用匿名对象
- [PHHuman new] ->_name = @“Mike”;
3,匿名对象的特点
- 因为匿名对象没有名字,所以这个对象只能使用一次,创建出来时即使用
Mark 02 封装
1.封装
- 将数据的状态和行为封装在一个类中,类中有很多复杂的实现,对于外部而言无需关心,我们只需要知道这个类是什么作用,怎么用.
2.使用setter方法来对属性赋值做逻辑验证
- setter方法是对象方法
- 一定没有返回值
- 名字必须以set开头,再跟上属性的名字,去掉下划线,首字母大写
- 一定有参数,参数类型和属性的类型一致
- 参数名字和属性名字保持一致,去掉下划线
- 在方法的视线中,判断参数的值是否符合逻辑,如何符合则赋值,若不适合,可以选择给一个默认值
3.使用getter方法获取对象的属性值
- getter方法是个对象方法
- 一定有返回值,返回值类型和属性的类型一致
- 名字就是属性的名字去掉下划线
- 一定没有参数
- 直接rerurn当前对象属性的值
Mark 03 关系
1.组合关系
- 对象A有其他若干个对象组合而成,这些对象是对象A的一个部分
2.依赖关系
- A类中有一个方法需要对象B做参数,此时对象A和对象B就是依赖关系,A依赖于B
3.关联关系
Mark 04 士兵突击
Mark 05 Static关键字
1.在C语言中
- 修饰局部变量,将局部变量变为静态变量
- 修饰全局变量,将全局变量静态变量
- 修饰函数
2.在OC中
- 不能修饰类的属性
- 不能修饰方法
- 可以修饰局部变量,效果和在C中一样
Mark 06 Self关键字
1.self关键字可以用在对象方法和类方法中
- self是一个指针
- 在对象方法中,self指向当前对象
- 在类方法中,self指向当前类
- 在对象方法中,可以使用self关键字来显示的访问当前对象的成员
- 可以使用self关键字显式的访问当前对象的属性
- 可以使用self关键字显式的访问当前对象的其它的对象方法
- 在对象方法中使用self的场景
- 必用场景
- 如果方法中存在和属性名相同的局部变量,这个时候直接写这个变量名的访问的是这个局部变量,如果你就是要访问属性,就必须使用self
- 在对象方法中如果要调用当前对象的其它的对象方法,就必须使用self. [self 其它方法名];否则不行,如果你创建对象,调用这个对象的方法,那就不是当前对象的方法了
- 选用场景
- 在方法中如果没有和属性名相同的局部变量,那么要访问这个属性,那么可以使用self,可以直接访问
- self在类方法中,self也是一个指针,这个指针指向当前类在代码段中的地址
- 如何拿到类在代码段中的地址
- 通过查看对象中的isa指针
- 在类方法中查看self的值
- 调用对象的方法class,也可以得到这个对象所属的类的地址
- 调用类方法class,也可以得到这个类的地址
- 在类方法中,self代表当前这个类——>self和当前类完全等价
- 在类方法中,可以使用self来代替当前类(声明变量除外)
Mark 07 继承的简单使用
1.继承的目的:子类想要拥有父类中的成员,但不想自己定义,就可以从父类继承
2.继承的步骤
- @interface 类名 : 父类
- @end
- @implementation 类名
- @end
3.专业术语
- @interface Person : Human
- Person类从Human类继承,Person类是Human类的子类,Human类是Person类的父类
- Person类从Human类派生,Person类是Human类的派生类,Human类是Person类的基类
4.继承是类的继承而不是对象的继承
5.不要为了继承而继承
6.只要成员不是所有子类都拥有的属性,就不应该定义在父类中
7.OC继承的特点
- 单根性 ———有且只有一个父类
- 传递性 ———多级继承
|
|