美文网首页
封装、继承、多态

封装、继承、多态

作者: Helen_kay | 来源:发表于2016-07-28 16:03 被阅读0次

    封装:隐藏内部实现,稳定外部接口.

    封装就是定义类 定义属性 定义方法

    属性封装了setter get方法 

    @property(nonatomic,retain)NSString *name,*sex;

    类封装了实例变量和方法

    ```

    #import<Foundation/Foundation.h>

    @interface Person : NSObject

    {

    NSString *_name;

    NSString *_sex;

    int _age;

    }

    @property(nonatomic,retain)NSString *name,*sex;

    @property(nonatomic,assign)int age;

    - (id)initWithName:(NSString *)name sex:(NSString *)sex age:(int)age;

    -(Person *)work;

    @end

    #import "Person.h"

    @implementation Person

    @synthesize name = _name,sex = _sex,age = _age;

    - (id)initWithName:(NSString *)name sex:(NSString *)sex age:(int)age

    {

    self = [super init];

    if (self) {

    self.name = name;

    self.sex = sex;

    self.age = age;

    }

    return self;

    }

    - (Person *)work

    {

    NSLog(@"%@正在工作",self.name);

    return 0;

    }

    @end

    ```

    继承:子类可以直接复用父类中的成员.子类继承父类所有方法的声明和实现 非私有的实例变量以及协议 继承是要在.h中声明一下 继承具有单根性和传递性

    继承就是代码优化公共部分交给父类

    ```

    #import "Person.h"

    @interface Worker : Person

    @end

    #import "Person.h"

    @interface King : Person

    @end

    ```

    多态:不同对象对同一消息的不同响应.子类可以重写父类的方法

    多态就是允许方法重名 参数或返回值可以是父类型传入或返回

    ```

    #import "AppDelegate.h"

    #import "Worker.h"

    #import "Actor.h"

    #import "King.h"

    Worker *worker = [[Worker alloc] init];

    worker.name = @"工人";

    [worker work];//worker 可以换为父类型Person

    King *king = [[King alloc]init];

    king.name = @"国王";

    [king work];//king可以换为父类型Person

    ```

    相关文章

      网友评论

          本文标题:封装、继承、多态

          本文链接:https://www.haomeiwen.com/subject/ioyajttx.html