zoukankan      html  css  js  c++  java
  • self关键字

    【转自】http://www.cnblogs.com/mjios/archive/2013/04/20/3031758.html

    本文目录

    • 一、Java中的this只能用在动态方法中,不能用在静态方法中
    • 二、OC中的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代表着当前方法的调用者

  • 相关阅读:
    怎样克服效率低
    开通博客
    一位父亲和一位母亲讲述孩子的成长故事--《粗养的智慧:李聃的普林斯顿之路》和《我的儿子马友友》阅读摘录
    读吴军博士新浪微博(2012.09-2014.12)信息整理
    读_浪潮之巅_新浪微博信息整理
    《现代软件工程-构建之法》读后感11-12章
    《现代软件工程-构建之法》读后感8-10章
    5.2 5.1的完善2.0
    四则运算程序的测试与封装
    《现代软件工程-构建之法》读后感6-7章
  • 原文地址:https://www.cnblogs.com/zqh005/p/4239751.html
Copyright © 2011-2022 走看看