封装:
封装属性和方法放在一个对象中,只给外界公开访问的接口,把具体实现隐藏起来,增加可读性,可维护性,扩展性
把信息尽量封装在一个对象里,只给外界的访问方式而不告诉具体的实现。
实例变量、方法、属性之间的公有、私有关系
访问范围:
.h公有:在其他文件中知不知道他的存在
实例变量:
@private 当前对象
@protected 当前对象和子对象 默认的
@package 当前项目
@public 所有地方
方法:任何位置访问
属性:任何位置访问
.m私有:
实例变量:
实例变量:也可以声明在.m文件中,这个应用多些,实际中不会直接访问实例变量
方法:只在当前文件中访问
属性:只在当前文件中访问
继承: 代码复用技术
可以增强一个类的能力,同时继承优点和缺点。
A继承B类就相当于拥有了B类的公开的所有属性和方法。OC中的继承为单继承,就是只能有一个父类,隔代继承也算是单继承
如果父类属性age=100,子类继承属性age,但是只是单纯的代码复用,和内存空间没有关系
语法规则:interface 子类:父类
方法的重写:子类不满意父类的方法,如果子类重写了父类的方法,优先调用子类重写的方法。
返回值类型 方法名(参数)要完全与父类的方法一样,才叫方法的重写。
继承的优缺点:
耦合性高,一个地方改其他地方也要改,代码的灵活度降低
继承会破会封装性
代码的复用简单的可以少用,复杂的可以使用组合、聚合。
可以制定规则。
为了多态。
多态:
是程序世界中的多种形态,基于类与类之间的继承关系
分为:引用多态:父类引用可以指向本类引用或子类引用。
运行多态;当方法运行的时候,不同的类型空间,方法的执行效果是不同的。
父类对象,运行父类对象中的方法
子类对象,并重写了父类方法,运行子类重写的方法
子类对象,没有重写父类的方法,运行父类的方法。
//引用多态 编译期语法,在编译的时候把对象当做父类引用编译
TRAnimal *al = [[TRAnimalalloc]init];
TRAnimal *a2 = [[TRDogalloc]init];
TRAnimal *a3 = [TRCatnew];
//运行多态 运行期语法,在程序运行的时候,根据内存情况,调用方法
//子类的引用是不能指向父类对象的
多态可以用于数组、参数和返回值类型中
TRTransportation *ji[3];
ji[0] = [TRBustransportationWith:3];
ji[1] = [TRTaxitransportationWith:5];
ji[2] = [TRBiketransportationWith:6];
for (int i =0; i<3; i++) {
[ji[i] show];
}
多态的好处,设计更合理的代码,是代码更通用,使程序的可维护性、可扩展性更强