OC 权限的概念:
1 实例变量:在子类的实现文件中不能直接访问父类的私有变量(但能通过setter、getter方法访问到),不能直接访问的意思就是说,我在父类中定义了一个私有的实例变量,名称是 _name,在子类的实现文件中不能直接通过 _name 这种方式访问,比如:在初始化函数中写 _name = name;就是错误的,但是在@protected属性的变量就可以这么使用,这是将实例变量声明为@private和非prote的唯一区别;
2 实例方法:其它面向对象语言比如C++和Java的区别是 OC里面的方法没有公有、私有等权限这一说法,意思是不能够显示的将方法声明为 私有或者其它权限,但是OC有一个相对私有的概念,就是不在头文件中声明,只在实现文件中实现,这样基本就保证了定义的这样一种方法只能够在当前类中使用,而基本不会被子类调用。为什么都是说基本?其实子类还是看能够调用这个相对私有的只在类的实现文件中定义的方法的,但前提是要求调用者知道那个未被声明的方法的方法名,意思就是可以访问,但是有一定门槛。
3 OC的子类能够继承父类除了私有变量以外的所有东西。
1 实例变量:在子类的实现文件中不能直接访问父类的私有变量(但能通过setter、getter方法访问到),不能直接访问的意思就是说,我在父类中定义了一个私有的实例变量,名称是 _name,在子类的实现文件中不能直接通过 _name 这种方式访问,比如:在初始化函数中写 _name = name;就是错误的,但是在@protected属性的变量就可以这么使用,这是将实例变量声明为@private和非prote的唯一区别;
2 实例方法:其它面向对象语言比如C++和Java的区别是 OC里面的方法没有公有、私有等权限这一说法,意思是不能够显示的将方法声明为 私有或者其它权限,但是OC有一个相对私有的概念,就是不在头文件中声明,只在实现文件中实现,这样基本就保证了定义的这样一种方法只能够在当前类中使用,而基本不会被子类调用。为什么都是说基本?其实子类还是看能够调用这个相对私有的只在类的实现文件中定义的方法的,但前提是要求调用者知道那个未被声明的方法的方法名,意思就是可以访问,但是有一定门槛。
3 OC的子类能够继承父类除了私有变量以外的所有东西。