Objective-C 类属性和方法的访问权限

OC中提供了4种访问权限,@private, @public, @protected这三种和其他的C++, Java是一样的,@package这个访问权限并不是Java里的包访问权限,OC中没有包的概念,这个是框架级的访问权限,在当前的framework的类中视为@protected,在框架以外的类中访问被视为@private。

//
//  Goods.h
//  05_Self
//
//  Created by apple on 14-11-10.
//  Copyright (c) 2014年 cc. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Goods : NSObject {

    //OC中提供了4种访问权限

    //当前类和子类可访问
    @protected
    //变量默认的访问权限就是 protected
    int _price;

    //只有当前类可以访问
    @private
    int _count;

    //所有的类都可以访问
    @public
    int _type;

    //这个比较特殊,对于framework内部是@protected的权限,对于外部的类是@private,相当于框架级的保护权限,适合使用在静态库.a中
    @package
    int _id;
}

@end
时间: 2024-12-29 10:05:33

Objective-C 类属性和方法的访问权限的相关文章

Solidity属性和方法的访问权限

属性:默认是internal的类型,外部是不可以访问调用的,如果加上public的话,那么是会自动为这个属性加上一个get的方法的,比如uint   public _age; => function _age() {} 自动生成 方法:默认是public的类型,外部是可以直接访问调用的 public:,不管是属性还是方法都可以通过合约地址的形式来进行访问,this.xxxxx()的形式,public属性:_age(),public方法:tets2()internal,private:,就不用加t

python干货-类属性和方法,类的方法重写

类属性与方法 类的私有属性 __private_attrs: 两个下划线开头,表明为私有,外部不可用,内部使用时self.__private_attrs. 类的方法 在类的内部,使用 def 关键字来定义一个方法,类方法必须包含参数 self,且为第一个参数.self的名称也可自己取,如使用this,但是建议还是用self为好. 类的私有方法 __private_method: 两个下划线开头,为私有方法,只能在类的内部调用 ,不能在类的外部调用.self.__private_methods.

override(重写,覆盖) 1、方法名、参数、返回值相同。 2、子类方法不能缩小父类方法的访问权限。 3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。 4、存在于父类和子类之间。 5、方法被定义为final不能被重写。 overload(重载,过载) 1、参数类型、个数、顺序至少有一个不相同。 2、不能重载只有返回值不同的方法名。 3、存在于父类和子

override(重写,覆盖) 1.方法名.参数.返回值相同. 2.子类方法不能缩小父类方法的访问权限. 3.子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常). 4.存在于父类和子类之间. 5.方法被定义为final不能被重写. overload(重载,过载) 1.参数类型.个数.顺序至少有一个不相同.   2.不能重载只有返回值不同的方法名. 3.存在于父类和子类.同类中. 方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现. 重写(O

Java基础知识强化17:JAVA不可以将所覆盖的方法的访问权限变得比父类的小

首先我们看一下下面的代码如下: 1 interface I { void go(); } 2 abstract class A implements I { } 3 4 class C extends A { 5 void go(){ System.out.println("I love you!"); } 6 } 在线编译出现如下报错: 分析: 出现这个错误的原因是: 接口的方法默认修饰符是:public abstract 这里实现的go( )方法的修饰符是default,访问权限降

Python 面向对象编程基础——初始化实例、类属性、方法

#1.初始化实例化属性.#可接受任意关键字参数,并把他们都作为属性赋值给实例.使用**kw,除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过setattr(self, 'name', 'xxx')设置属性.class Person(object):    def __init__(self, name, gender, **kw):        self.name = name        self.gender = gender        for k,v i

python类的使用(类定义,构造器,类属性,方法)

注:这里只描述使用方法,具体类的概念长篇大论就不要为难我这个懒人了. 总之一句话编程语言只是一个工具,会用就行,好用就行.打破砂锅问到底,我觉得有必要研究一下C,汇编,电子链路等. 1 class cltdy: #定义类,并起一个名字 2 n = 1000 #类属性,类内的变量 3 def __init__(self,name,age,profession='IT民工'): #构造函数,类接收外部传入参数全靠构造函数 4 self.name = name 5 self.age = age 6 s

php 定义类属性和方法的public protected private 修饰词的区别

这三个词在定义类的属性和方法时使用,其最大的区别在与他们作用域不同 public :全局使用,不仅是本类,其子类,创建的对象都可以使用,甚至子类的子类由于继承关系,也可以使用. protected:本类和其子类使用,如果后续有继承的话, private : 仅限本类使用 class ClassA { public $a = 1; protected $b = 2; private $c = 3; public function share() { echo 'a='.$this->a."\

Scala中包、类、对象、成员访问权限理解

本文通过下面一个程序简单分析下包.类.对象访问权限的情况: package spark {   package navigation {     private[spark] class Navigator {       protected[navigation] def useStartChar() = println("navigation")       class LegOfJourney {         private[Navigator] val distance =

Swift 中 Selector 方法的访问权限控制问题

今天用Swift写了个视图,在视图上加个手势,如下所示: 1 2 panGestureRecognizer = UIPanGestureRecognizer(target: self, action: "beginDragged:") addGestureRecognizer(panGestureRecognizer) 运行了下程序,然后崩溃了.崩溃日志如下: 1 [**.SwipeCardView beginDragged:]: unrecognized selector sent