多态 继承 复合

来源:互联网 发布:淘宝号改后台有危害吗 编辑:程序博客网 时间:2024/05/17 02:59

//1.为什么创建的SON对象可以给Father类的指针赋值?

//《赋值兼容规则》 可以用父类的指针指向子类的对象。

//@interface Son : Father

Father *laowang = [[Sonalloc] init];        

//在通过对象指针去调用方法的时候,我们不看指针是什么类型的指针,只看指针所指向的对象。

//多态。多态的基础是可以用父类的指针指向子类对象。

//像我们使用父类的指针指向子类的对象,然后调用方法,会自动的根据指针所指向的类型来调用相应的方法,这种情况我们叫多态。

1. 继承(is-a关系)

   如    @interface YourObject:NSObject

        {

               …………

               …………

         }

         @end

冒号后的标示符是需要继承的类。必须注意的是,objective-c不支持多继承,只能有一个父类。若需要改变父类某函数的实现,则需要重写方法。Objective-c支持重写方法,同时仍然调用超类的实现方式。这时需要使用super关键词来调用父类方法。如:

   [super init];

 

2. 复合(has-a关系)

    objective-c中,复合是通过包含作为实例变量的对象指针实现的。

例如,使用一个Pedal(脚踏板)对象和一个Tire(轮胎)对象组合出虚拟的独轮车。此时应该拥有一个指向Pedal对象的指针和一个指向Tire对象的指针,

        @interface Unicycle: NSObject

       {

            Pedal *pedal;

            Tire *tire;

        }

        @end

 

Pedal和Tire通过复合的方式组成了Unicycle,严格来讲,只有对象间的组合才能叫复合,而基本类型都被认为是对象的一部分。


0 0
原创粉丝点击