OC学习

OC学习3

面向对象的三大基本特征

     1.封装:隐藏内部实现,稳定外部接口
        属性封装了实例变量
        方法封装了具体实现的代码
        类封装了属性和方法
     好处:
        使用起来更加简单
        变量更加安全
        可以隐藏内部实现细节
        开发速度更加快捷

     2.继承
        为什么要使用继承?
       2.1. 在开发过程中,我们会发现很多相同的代码,特别是创建一些类的时候,发现类与类之间有很多的属性及方法,这些方法和属性会写                  很多次,如果程序员这样干 ,就显得很low了.在面向对象中,有继承的概念,我们可以使用继承方式将相同的属性和方法放到一                     个类中,然后其它类继承子类,我们将这种方式叫做继承.
       2.2. 继承即是让一个类拥有另外一个类的某些属性和方法的特性,被继承的类称为父类(基类),继承类称为子类.子类可以直接拥有父                      类中的所有非私有属性和方法.

        什么时候使用继承?
            在开发中发现一些具有相同的特征和方法,我们使用继承.

     在OC中只有单继承的概念,并没有多继承,那么问题来了,OC中如何实现多继承?(note:不要使用协议)
     - 1.协议
     - 2.在这第二个方法当中,比较重要的就是,我们要在子类C中重写init方法.在重写的init方法中,对父类A与B进行实例化.
     - `-(id)init{
                    if(self = [super init]){
                        _a = [A new];
                        _b = [B new];
                }
                return self;
        }`

PS:以下是多继承的代码

1. A.h

#import <Foundation/Foundation.h>

@interface A : NSObject

@property (nonatomic,strong) NSString *aproperty;

-(void)methodA;


@end
  1. A.m
#import "A.h"

@implementation A

-(void)methodA{
    NSLog(@"methodA");
}

@end
  1. B.h
#import <Foundation/Foundation.h>

@interface B : NSObject

@property (nonatomic,strong) NSString *bproperty;

-(void)methodB;


@end
  1. B.m
#import "B.h"

@implementation B

-(void)methodB{
    NSLog(@"methodB");
}

@end
  1. C.h
#import <Foundation/Foundation.h>
#import "A.h"
#import "B.h"

@interface C : NSObject

@property (nonatomic,strong) A *a;
@property (nonatomic,strong) B *b;


@end
  1. C.m
#import "C.h"

@implementation C

-(id)init{
    if(self = [super init]){
        _a = [A new];
        _b = [B new];
    }
    return self;
}

//+(void)load{
//    NSLog(@"%@",load);
//}


-(NSString *)description{
    return  @"我是这个类的描述.";
}
@end
  1. main.m
#import <Foundation/Foundation.h>
#import "C.h"


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

    @autoreleasepool{
        C *c = [C new];
        c.a.aproperty = @"xxx";
        c.b.bproperty = @"yyy";
        [c.a methodA];
        [c.b methodB];
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值