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);
}