笔记15是一个练习,一个类创建另两个类的对象,并调用另两个类的方法。
视频16:
#inport和#inclide的区别:
讲区别就先要清楚他们两个有什么功能
在OC语言里面#inport和#inclide都表示引用,举例:
创建h类,便有h.h和h.m文件,现类的实现文件引入类的声明文件,即h.m文件引入h.h文件
#inport和#inclide都可在h.m文件中引入h.h文件
区别:
#inclide没有重复判断功能,如果使用#inclide在h.m文件中重复导入h.h文件便出处了
#import有重复判断功能,如果使用#import在h.m文件中重复导入h.h没有问题,它会将其视为导入一个.h文件。
2.1封装的概念
有一个Car类,创建一个对象car,可以用car->属性 = **;方式给类的属性赋值。引用自http://blog.youkuaiyun.com/chenzufeng1314/article/details/22899363
封装基本概念
因为成员变量是public的,也就是公开的,我们不能控制外界如何赋值
外界有可能赋值一些脏数据
可以利用封装来解决这个问题
封装:是指隐藏对象的属性和实现细节,仅对外提供公共的访问方法
因为成员变量是public的,也就是公开的,我们不能控制外界如何赋值
外界有可能赋值一些脏数据
可以利用封装来解决这个问题
封装:是指隐藏对象的属性和实现细节,仅对外提供公共的访问方法
所以我们可以利用 get/set来解决
给成员变量赋值的方法我们称之为set方法
获取成员变量的值的方法我们称之为get方法
set方法:
1.一定是对象方法
2.一定没有返回值
3.方法名称一定以set开头,set后面跟上属性名称去掉下划线,并且首字母大写
4.一定有参数, 参数类型一定和成员变量类型相同
5.参数名称一般是成员变量名称去掉下划线
get方法
1.一定是对象方法
2.一定有返回值类型,返回值类型和成员变量类型相同
3.方法名称是成员变量名称去掉用下划线
4.一定没有参数
如果没有提供set方法的成员变量我们称之为只读属性, 也就是说只有get没有set
如果没有提供get方法的成员变量我们称之为只写属性, 也就是说只有set没有get
组合模式:
组合模式:组合模式就是在一个类中,声明类其他对象的指针变量(把其它对象声明为当前对象成员变量)
组合模式就是一个"谁拥有谁"的一个概念
如何判断组合模式是否合理: 谁拥有谁
组合模式的优点:
全局对象方法中都可以直接访问,简化了代码
缺点:
依赖性比较大
组合模式的使用场景:
当多个方法中都用到了同一个对象,那么就把他设置成成员变量
继承基本概念
总结:
基本概念:
当B类继承类A类, B类就拥有类A类的成员变量和方法
如何判断继承是否合理: is a XXX 是 XXX
继承的好处:
继承的出现提高类代码的复用性
继承的出现让类与类之间产生类关系, 提供了多态的前提
继承的坏处:
耦合性太强
继承中的注意点:
>1.子类不能拥有和父类相同名称的成员变量
>2.在继承中调用某个方法时,优先去当前类中查找,如果找不到再去父类中找
>3.OC中只有单继承(只允许有一个父类),没有多继承(同时继承两个父类),但是支持多层继承
注意,在子类中不能有和父类中名称一模一样的成员变量
当子类当中编写类和父类当中一模一样的方法,我们称之为重写
继承中方法的调用顺序,会先在本类中找,如果本类中找不到再去父类中找
多态基本概念
总结:
什么是多态:某一类事物的多种形态
多态的前提:必须有继承关系
表现形式:父类类型的指针指向子类对象
多态的局限性:
父类类型的指针不能用来调用之类类型的特有方法, 如果想调用子类特有方法必须进行强制类型转换