`
雨打蕉叶
  • 浏览: 236089 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

self关键字

阅读更多

说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C。如果你还没有编程经验,或者对Objective-C、iOS开发不感兴趣,请忽略。学习本专题之前,建议先学习C语言专题。

OC中有一个self关键字,用法跟Java中的this类似,都是代表着当前方法的调用者。但self和this还是有区别的。

一、Java中的this只能用在动态方法中,不能用在静态方法中

1.在动态方法中使用this关键字

复制代码
1 public class Student {
2     private int age;
3     public void setAge(int age) {
4         this.age = age;
5     }
6 }
复制代码

在第4行使用了this,这里的this代表着调用setAge方法的某个Student对象

 

2.如果在静态方法中使用this关键字,直接报错

 

二、OC中的self既可以用在动态方法中,也可以用在静态方法中

1.self在动态方法中

复制代码
 1 @implementation Student
 2 
 3 - (void)test2 {
 4 
 5 }
 6 
 7 - (void)test3 {
 8     [self test2];
 9 }
10 
11 @end
复制代码

* 在第3行、第8行定义了2个动态方法

* 在第8行使用了self关键字,这里的self代表着调用test3方法的某个Student对象

* 第8行代码的作用是调用Student对象的动态方法test2

 

2.self在静态方法中

复制代码
 1 @implementation Student
 2 
 3 + (void)test2 {
 4 
 5 }
 6 
 7 + (void)test3 {
 8     [Student test2];
 9     
10     [self test2];
11 }
12 
13 @end
复制代码

* 在第3、第7行定义了2个静态方法看清楚方法前面的+号

* 再看第10行,这里用到了self。看清楚了,是在静态方法test3中用到了self关键字

* 一开始就说了,self代表着当前方法的调用者。当前方法是test3,那test3的调用者是谁呢?肯定是Student这个类,因为test3是个静态方法。因此这里的self代表着Student这个类

* 因此,第8行、第10行的作用是一样,都是调用了静态方法test2

 

3.self总结

1> 在动态方法中,self代表着"对象"

2> 在静态方法中,self代表着"类"

3> 万变不离其宗,记住一句话就行了:self代表着当前方法的调用者

分享到:
评论

相关推荐

    PHP 5.2 标准课程初级parent 与self 关键字

    PHP 5.2 标准课程初级parent 与self 关键字

    PHP 5.2 标准课程初级parent 与 self 关键字-1

    PHP 5.2 标准课程初级parent 与 self 关键字_1

    PHP 5.2 标准课程初级parent 与 self 关键字-2

    PHP 5.2 标准课程初级parent 与 self 关键字_2

    计算机前端-核心编程.视频13self关键字.avi

    计算机前端-核心编程.视频13self关键字.avi

    15.5 面向对象中实例方法与self关键字_0416212101.mp4

    15.5 面向对象中实例方法与self关键字_0416212101.mp4

    PHP中的self关键字详解

    PHP群里有人询问self关键字的用法,答案是比较明显的:静态成员函数内不能用this调用非成员函数,但可以用self调用静态成员函数/变量/常量;其他成员函数可以用self调用静态成员函数以及非静态成员函数。随着讨论的...

    PHP中static关键字以及与self关键字的区别

    主要介绍了PHP中static关键字以及与self关键字的区别,本文讲解了static关键字的定义、迟绑定(Late Static Bindings)、以及与self关键字的区别等内容,需要的朋友可以参考下

    demo03_self关键字的使用.py

    作为一个零基础人员,也是天天在网上找资料,深知资料的重要,为此,贡献一些资料,希望各位能够更进一步,少走弯路

    第二章-Object-C面向对象部分.ppt

    本资源从Object-C的基本特性讲起,逐步深入到类和对象的定义、成员变量和方法的实现、对象的产生和使用、self关键字、id类型、封装技术、合成存取方法、键值对编码和键值监听、继承与重载、多态、类型判断、类别与...

    PHP5中的this,self和parent关键字详解教程

    self关键字用于引用当前类本身,常用于访问类的静态成员,比如静态方法和静态属性。parent关键字则用于引用当前类的父类,常用于调用父类的方法和属性。 接着,通过具体的代码示例,我们可以更清楚地看到它们的用法...

    PHP5类与对象编程[定义].pdf

    例如,例10.12展示了如何在`OtherClass`中通过self关键字访问`OtherClass`的静态属性`$my_static`。而parent关键字则用于在子类中调用父类的方法,它允许子类覆盖父类的方法后仍能访问到父类的原始实现。如例10.13所...

    PHP5中的this self和parent关键字详解

    `,首先使用`self`关键字来访问`Counter`类的静态属性`$firstCount`,然后对其执行自增操作,并将结果赋值给对象的私有属性`$lastCount`。 - 创建`$countObject`对象并调用`printLastCount`方法时,`self`始终指向`...

    Delphi面向对象

    本文将深入探讨Delphi中的面向对象编程,包括类的声明、对象的构建、is和as操作符的使用,以及self关键字的含义。 1. **类的声明** 类在Delphi中的声明语法类似于其他面向对象语言,如C++或Java。例如,`TMan`类的...

    PHP中new static() 和 new self() 的区别介绍

    当在类的静态方法中引用静态属性或方法时,必须使用self关键字,而不是$this关键字,因为$this关键字是在对象实例化后用来引用对象实例的属性或方法。 例如,以下是一个使用self关键字引用静态属性的例子: ```php...

    Objective-C课大三作业.rar

    内容概要:这份作业包含了多个Objective-C案例,涵盖了成员变量的引用、set与get方法、继承、多态、self关键字、点语法、init方法重写、自定义构造方法、description方法、野指针错误、autorelease和自动释放池、...

    php学习总结.pdf

    7. **self关键字**:`self`关键字代表当前类,常用于在静态方法中访问静态成员,如`self::member`。与`$this`不同,`self`不能用于访问非静态成员。 8. **魔术方法**:以`__`开头的方法称为魔术方法,会在特定条件...

    python类与对象小结

    3. self的用法:self关键字在类的方法中表示当前对象的实例。通过self关键字,我们可以访问对象的属性和方法。在同一个类的任何方法中,self始终指向对象的实例本身,而不需要传递对象引用。 4. 魔法方法:Python中...

Global site tag (gtag.js) - Google Analytics