黑马程序员------OC类的封装 继承 多态

     ——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-


类的封装 


/*

oc语言中使用@interface@implementation来处理类

类的封装

变量默认只能被当前类的对象方法访问。*/

//不封装的缺点:

//当一个类把自己的属性暴露在外部的时候,那么该类就会失去对属性的管理权。



/*

get方法的实现规范

get的方法一定是一个对象方法

get 方法一定有返回值,返回值类型和实例变量的类型一致

get 方法名,是去掉换线的实例变量名

get方法 一定没有参数

get 方法的实现一定是返回实例变量值,

 

 以后获取name的值,都同意的使用nameget方法

 -(NSString *)name

 -intage

 //(int)_age;

 -(sex)sex;

 //-(sex)_sex;

*/


#import

@interface Gun :NSObject   //  对象的声明

{

    int _bulletcount ;


}

-(void)shoot ;

-(void)setBulletCount;

 @end



@implementation Gun   //对象的实现


-(void)shoot{

    if (_bulletcount > 0){     //调用函数的封装

    _bulletcount--;

        NSLog(@"tutu...剩余子弹:%d",_bulletcount );

    }else{

    

        NSLog(@"没有子弹");

    }


}

-(void)setBulletCount :(int)bulletCont{

    if (bulletCont>0){

        _bulletcount=bulletCont;     //函数的封装

    }else {

        _bulletcount=0;

        

    }


}


@end

int main(int argc, const char * argv[]) {

    @autoreleasepool {

       

        Gun *gun =[Gun new];


//        gun ->_bulletcount = 3;

        [gun setBulletCount:3];

        

        

        [gun shoot ];

        [gun shoot ];

        [gun shoot ];

        [gun shoot ];

       

    }

    return 0;

}


   类的继承 



继承的注意事项

自类不能定义和父类同名的变量,但同时可以继承父类的变量.


@interface doganimal

{

    int _tuiNum ;

}



oc 继承体系中的方法调用顺序

1、在自己类中找

2、如果如果没有去父类中找

3、如果父类么有,还往上找,直到找到为止,直到基类

4、如果基类(NSObject)中没有就会报错




类多态的概念和条件

什么是多态

多态就是某种事物的多种形态

猫:  猫--》动物

狗:   狗--》动物

男人:男人--》人--》高级动物

女人:女人--》人--》高级动物

程序中的多态:不同的对象以自己的方式相应相同的名称方法的能力称为多态


多态的条件


多态的条件:有继承关系,有方法重写


               父类的声明变量指向子类对象

代码体现:用父类类型的指针指向了子类的对象,这就是多态。


多态的优点

     
           多态的主要好处就是简化了编程的接口,它容许在类和类之间重用一些习惯性的命名。而不用为每个新加的函数命名一个新的

   名字。这样,编程接口就是一些抽象的行为的集合,从而和实现接口的类的区分。

            多态也使得代码可以区分不同的对象中而不用试图在一个函数中考虑到所有的对象。这样的您的代码扩展性和复用性就会更好    
   些 。当有个新的情景出现时,你就不用把现有的代码全数更改,而只需要增加一个新的类和新的同名的方法。


多态的注意点


1、如果存在多态,父类是可以访问子类特有的方法

假设子类Dog有一个特有的方法bark

【dog bark】;

Animal *an2=【Dog new】;

【(Dog*)an2   bark  】;//把父类的指针,强制类型转换

2、如果不存在多态,父类是不可以访问子类特有的方法的







你可能感兴趣的:(黑马程序员------OC类的封装 继承 多态)