M牛C原创博客——oc面向对象的三大特性

来源:互联网 发布:redis mysql 缓存方案 编辑:程序博客网 时间:2024/06/07 17:41

封装:


封装属性和方法放在一个对象中,只给外界公开访问的接口,把具体实现隐藏起来,增加可读性,可维护性,扩展性

把信息尽量封装在一个对象里,只给外界的访问方式而不告诉具体的实现。

实例变量、方法、属性之间的公有、私有关系

访问范围:

.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];

        }


多态的好处,设计更合理的代码,是代码更通用,使程序的可维护性、可扩展性更强


0 0
原创粉丝点击