@private、@protected与@public三者之间的区别

@private、@protected与@public三者之间的区别

 

类之间关系图

 

@private只能够使用在声明的类当中,其子类也不能够使用用@private声明的实例变量

 

@protected只能在声明的类当中使用,但其子类具有使用@protected声明变量的资格

 

@public可以全局使用,属性是具有全局属性的

 

实例变量其实是支持KVO的,如果你帮实例变量写了setter,getter方法

 

相关源码

#import <UIKit/UIKit.h>

@interface TitleView : UIView {

@private
    int        _count;    // 只能在当前类中使用

@protected
    NSString  *_title;    // 当前类与子类可以使用

@public
    NSString  *_subTitle; // 任何地方都可以使用
}

@property (nonatomic, strong) NSString  *info;

@end
#import "TitleView.h"

@implementation TitleView

- (instancetype)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];
    if (self) {

        _count = 4;

        _title = @"Title";

        _subTitle = @"SubTitle";
    }

    return self;
}

@end
#import "TitleView.h"

// MoreTitleView 继承自 TitleView
@interface MoreTitleView : TitleView

@end
#import "MoreTitleView.h"

@implementation MoreTitleView

- (instancetype)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];
    if (self) {

    }

    return self;
}

@end

即时没有写setter,getter方法,也是可以使用KVO的哦,只需要自己手动触发即可

时间: 2024-10-23 15:05:27

@private、@protected与@public三者之间的区别的相关文章

你知道URL、URI和URN三者之间的区别吗?

这是一个经典的技术争论,许多人都会自问:URL.URI,很可能还有URN,它们之间的区别是什么.虽然,现在我们简单地把 URN 和 URL 都看做 URI,但严格来说URI可以进一步划分为URL.URN或者这两者的组合,所以了解这三者之间的区别将会非常有趣并让人受益匪浅.如果你恰好在某个地方碰到了这些东西,那么至少应该知道它们的含义. 我认为,尽管对一般人来说,不了解这三个缩略词之间的技术差异以及它们各自的含义并不是什么问题.但是,如果你作为一个计算机科学家.一个Web开发者.一个系统管理员,或

组件,控件,类这三者之间的区别

问题描述 各位大侠:初学.NET,想问下组件,控件,类这三者之间的区别? 解决方案 解决方案二:控件:在ide中左边工具条中出现的东东,可以直接拖到界面上使用的组件:编译后的实体.比如在一个解决方案中有一个项目是对数据库操作的,如果写得比较好,以后可以继续在其他解决方案中使用,那么可以将其编译成组件,可以提高效率(webcast中mordenc#第9讲有简单介绍,可以看看)类:一种数据结构,可以包含数据成员,函数成员等等,通俗点说,你可以定义一个公共类,那么一个公共变量.公共方法可以放在这个类中

开发人员、程序员与计算机科学家三者之间的区别

导读:原文作者Alan Skorkin写了一篇<The Difference Between A Developer, A Programmer And A Computer Scientist>,文中讲述如何区分程序员.开发人员和计算机科学家之间的区别,发表了个人见解.现将译文<开发人员.程序员与计算机科学家三者之间的区别>转载,以下是文章内容: 我经常使用这三个几乎可以互换的词,是的,甚至包括计算机科学家.毕竟,我们中的大多数人都拥有计算机科学学位,那这三者有什么不同呢?然而,

Java中的private、protected、public和default的区别(详解)_java

(1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类.接口.异常等.它往往用于对外的情况,也就是对象或类对外的一种接口的形式. (2)对于protected修饰符,它主要的作用就是用来保护子类的.它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西. (3)对于default来说,有点的时候也成为friendly(友员),它是针对本包访问而设计的,任何处于本包下的类.接口.异常等,都可以相互访问,即使是父类没有用prote

innerHTML,outerHTML,innerTEXT三者之间的区别_javascript技巧

与innerHTML不同,outerHTML包括整个标签,而不仅限于标签内部的内容.对于一个id为"testdiv"的div来说,outerHTML.innerHTML以及innerTEXT三者的区别可以通过下图展示出来:

简单说说Java SE、Java EE、Java ME三者之间的区别_java

1. Java SE(Java Platform,Standard Edition).Java SE 以前称为 J2SE.它允许开发和部署在桌面. 服务器.嵌入式环境和实时环境中使用的 Java 应用程序.Java SE 包含了支持 Java Web 服务开发的类, 为 Java Platform,Enterprise Edition(Java EE)提供基础. 2. Java EE(Java Platform,Enterprise Edition).这个版本以前称为 J2EE.企业版本帮助开发

php class中public,private,protected的区别,以及实例

一,public,private,protected的区别 public:权限是最大的,可以内部调用,实例调用等. protected: 受保护类型,用于本类和继承类调用. private: 私有类型,只有在本类中使用. 二,实例 Java代码   <?php   error_reporting(E_ALL);      class test{    public $public;    private $private;    protected $protected;    static $

php class中public,private,protected的区别以及实例分析_php技巧

一,public,private,protected的区别public:权限是最大的,可以内部调用,实例调用等.protected: 受保护类型,用于本类和继承类调用.private: 私有类型,只有在本类中使用. 二,实例 复制代码 代码如下: <?phperror_reporting(E_ALL);class test{ public $public; private $private; protected $protected; static $instance; public  func

php5中public,private,protected 三种类属性的区别

public: 公有属性或方法 在子类中可以通过self::var 或self::method 来调用 ,可以通过parent::method来调用父类中的方法,但不能调用公有属性. 在实例中可以通过$obj->var或self::method 来调用 protected: 受保护类型 在子类中可以通过self::var 或self::method调用, 可以通过parent::method来调用父类中的方法 在实例中不能通过$obj->var 来调用  protected类型的方法或属性 p