面向对象特性
#import int main(int argc, const char * argv[]) { } |
self和类方法
// #import //闪光灯状态 typedef enum { }FlashlightStatus; @interface Iphone : NSObject { } - (void)setCpu:(int)cpu; - (int)cpu; //拍照方法 + (void)cameraWithFlashlightStat //打开闪光灯 + (void)openFlashlight; //关闭闪光灯 + (void)closeFlashlight; @end // #import "Iphone.h" @implementation Iphone + (void)cameraWithFlashlightStat { // // // // // // // } + (void)openFlashlight { } + (void)closeFlashlight { } - (void)setCpu:(int)cpu { } - (int)cpu { } @end // #import #import "Iphone.h" int main(int argc, const char * argv[]) { } |
self和对象方法成员变量
// #import //闪光灯状态 typedef enum { }FlashlightStatus; @interface Iphone : NSObject { } - (void)setCpu:(int)cpu; - (int)cpu; //拍照方法 //+ (void)cameraWithFlashlightStat - (void)cameraWithFlashlightStat //打开闪光灯 - (void)openFlashlight; //关闭闪光灯 - (void)closeFlashlight; 打开闪光灯 //+ (void)openFlashlight; 关闭闪光灯 //+ (void)closeFlashlight; @end // #import "Iphone.h" @implementation Iphone - (void)cameraWithFlashlightStat { } // #import #import "Iphone.h" int main(int argc, const char * argv[]) { // // } |
self注意
// |
继承和super(重要)
关于继承的一些认识:
继承本质:继承是从单一方面描述一个事物,他想表达的是:是一个(is a)的问题;而如果想从多个方面描述一个事物用多态来描述(这是建立在继承上的)
继承价值:1>继承的出现减少了代码量
2>为多态的特性垫底基础
继承模型:每一个类都可以看成是由父类和扩展内容组成的,及图中的上部分和下部分组成,多层继承是一个递归过程
如果重写了某个父类方法后想调用原父类被重写的方法用super(这个单词的意思不翻译为”超”它是”上一个”,他是一个词根,可在《现代英语词源字典》中查到)
// #import #import "Phone.h" @interface Iphone : Phone @end // #import "Iphone.h" @implementation Iphone // 如果在子类中实现了和父类中同名同类型的方法,我们称之为重写 - (void)cameraWithFlashlightStat { } + (void)test { } @end // #import //闪光灯状态 typedef enum { }FlashlightStatus; @interface Phone : NSObject { } //拍照 - (void)cameraWithFlashlightStat //打开闪光灯 - (void)openFlashlight; //关闭闪光灯 - (void)closeFlashlight; + (void)test; - (void)test; @end // #import "Phone.h" @implementation Phone - (void)cameraWithFlashlightStat { } - (void)openFlashlight { } - (void)closeFlashlight { } - (void)setCpu:(int)cpu { } - (int)cpu { } + (void)test { } - (void)test { } @end // #import #import "Phone.h" @interface Anycall : Phone { // // } + (void)test; @end // #import "Anycall.h" @implementation Anycall //+ (void)test //{ // //} - (void)cameraWithFlashlightStat { // // // // // // // // // // // // // // // // } + (void)test { // } - (void)test { } @end // #import #import "Iphone.h" #import "Anycall.h" int main(int argc, const char * argv[]) { // // // // // // // // // } |
description
// #import @interface Iphone : NSObject { } - (void)setCpu:(int)cpu; - (int)cpu; - (void)setSize:(int)size; - (int)size; - (void)setWeight:(int)weight; - (int)weight; - (void)setColor:(int)color; - (int)color; @end // #import "Iphone.h" @implementation Iphone - (void)setCpu:(int)cpu { } - (int)cpu { } - (void)setSize:(int)size { } - (int)size { } - (void)setWeight:(int)weight { } - (int)weight { } - (void)setColor:(int)color { } - (int)color { } - (NSString *)description { } + (NSString *)description { } @end // #import #import "Iphone.h" int main(int argc, const char * argv[]) { // // // // } |
多态
关于多态的一些认识:
多态本质:继承是从单一方面描述一个事物,他想表达的是:是一个(is a)的问题;而如果想从多个方面描述一个事物用多态来描述(这是建立在继承上的),多态是多种形态它通过继承实现,它想描述一个事物“既是A也是B”
多态价值:赋值兼容(解耦)
多态条件:
1>继承,并重新父类方法
2>父类引用指向子类对象
3>运行时绑定
// #import //动物类 @interface Animal : NSObject { } - (void)eat;// 吃 @end // #import "Animal.h" @implementation Animal - (void)eat { } @end // #import "Animal.h" //猫类 @interface Cat : Animal @end // #import "Cat.h" @implementation Cat - (void)eat { } @end // #import #import "Animal.h" //狗类 @interface Dog : Animal - (void)jiao; @end // #import "Dog.h" @implementation Dog - (void)eat { } //狗的特有方法 - (void)jiao { } @end // #import #import "Dog.h" #import "Cat.h" @interface Person : NSObject //饲养员 ,专门喂动物 - (void)feedDog:(Dog *)dog; - (void)feedCat:(Cat *)cat; // 1000种动物 - (void)feedAnimal:(Animal *)animal; @end // #import "Person.h" @implementation Person - (void)feedDog:(Dog *)dog { } - (void)feedCat:(Cat *)cat { } - (void)feedAnimal:(Animal *)animal// Animal *animal = [Dog new]; { // } @end // #import "Animal.h" @interface Pig : Animal @end // #import "Pig.h" @implementation Pig - (void)eat { } @end // #import #import "Dog.h" #import "Cat.h" #import "Animal.h" #import "Person.h" #import "Pig.h" int main(int argc, const char * argv[]) { // // 注意:" // // // } |