三种可见度

1.@public  

被public 修饰的变量可以在外部(再声明一个新的类,也能访问) 和 该类的内部(在该类的.m文件内部)被访问,这样就可以在 main 函数中访问

@public 一般是不安全的 凡是被@public 修饰的在外部都会被访问 暴露内部写的细节(内部代码的实现)有违背面向对象封装的思想(外部可访问、可修改),所以一般不用这种

2.@ protected

受保护的,只能在该类 和他的子类中可以访问(如在人类的下面的学生类)是实例变量默认的可见度

3.@private

私有的可见度 只能在该类的内部访问(子类也使用不了) 违背了继承的思想

 NSObject  类是根类 是基类

 

总结: 三种可见度(及其区分),为了保护实例对象的封装性,我们有了setter getter 设置器,区分 self 究竟在不同的场景中代表什么?

 

#import <Foundation/Foundation.h>
#import "Person.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        //今天的学习内容是:方法 与 可见度
        //三大特性:封装 继承 多态
        Person *per = [[Person alloc]init];
//        per ->_name = @"张俊伟";//前面可见度改为默认的了
//        per ->_age = 45;
//        per ->_gender = @"男";
//        per ->_heigth = 1.75;
//        per ->_weight = 125;
        [per setName:@"ann"];
        NSString * name = [per getName];
        NSLog(@"name is %@",name);
        [per setAge:45];//赋值
        [per age];//取值
        NSLog(@"%ld",[per age]);
        [Person methoodForTest];
        [per objectMethood];
        [per class];//这里返回的就是 per 指向的类
    }
    return 0;
}
 main

相关文章: