三种属性【公有、私有、保护】

Main.m

#import <Foundation/Foundation.h>
#import "Car.h"
#import "Truck.h"

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

    Car *car = [[Car alloc] init];
    car.name = @"东风";
    car.brand = @"无限互联";
    //在类的外部可以访问
    car -> _color = @"red";
    [car run];
    
//    [car test];
    
    //错误,私有属性不能在外部访问
//    car -> _name = @"tets";
    
    //错误,受保护的属性不能在外部访问
//    car -> _brand = @"test";
    
    Truck *truck = [[Truck alloc] init];
    truck.brand = @"兰博基尼";
    truck -> _color = @"黑色";
    [truck run];
    
    
    return 0;
}

Car.h

#import <Foundation/Foundation.h>

@interface Car : NSObject {

@private    //私有属性,只能在类的内部访问
    NSString *_name;

@protected  //受保护的属性,默认的就是受保护类型,可以在类的内部或者子类中可以访问
    NSString *_brand;
    
@public //公有属性,在任何地方都可以访问,使用这个修饰需要注意:会破坏封装性
    NSString *_color;
    
//@package    //只能在当前的框架中访问

}

- (void)setName:(NSString *)name;
- (void)setBrand:(NSString *)brand;

- (void)run;

@end

Car.m

#import "Car.h"

@implementation Car

//在C语言中的似有方法
static void print() {

    NSLog(@"私有方法");
    
}

- (void)run {

    //私有属性在类的内部可以访问
    //受保护的属性可以在类的内部访问
    //公有属性在类的内部可以访问
    NSLog(@"%@%@%@的车启动了",_name,_brand,_color);
    
    [self test];
    
}

- (void)setName:(NSString *)name {
    _name = name;
}

- (void)setBrand:(NSString *)brand {

    _brand = brand;
}


//OC的私有方法:(OC中的私有方法只是一个约定,在语法上不是真正的私有方法)
- (void)test {

    print();
    
    NSLog(@"测试");
}

@end

Truck.m

- (void)run {
    
    //私有属性在子类的中不可以访问
//    NSLog(@"%@的车启动了",_name);

    //受保护的属性在子类中可以访问
//    NSLog(@"%@的车启动了",_brand);
    
    //公有属性在子类中也可以访问
    NSLog(@"%@%@ 的车启动了",_brand,_color);
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值