self

一、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代表着当前方法的调用者

 

转载于:https://www.cnblogs.com/chenziqiang/p/4930251.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值