开发者社区> 啊啊啊88jdk> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

self关键字

简介: self关键字 self:当前类/对象的指针(指向当前对象/方法调用者) 作用1 当类里有变量名和成员变量名一样的时候,可以使用self区分 例: 我们写一个人的类,有一个年龄属性,在get方法里,我们定义一个与成员变量同名的变量,并初始化一个值为10,如果我们return _age;,则返回的是10,并不是我们的成员变量_age,但是如果我们使用self指针获取_age,那么返回的就必定我们的成员变量_age了。
+关注继续查看

self关键字

self:当前类/对象的指针(指向当前对象/方法调用者)

作用1

当类里有变量名和成员变量名一样的时候,可以使用self区分

  • 例:

    我们写一个人的类,有一个年龄属性,在get方法里,我们定义一个与成员变量同名的变量,并初始化一个值为10,如果我们return _age;,则返回的是10,并不是我们的成员变量_age,但是如果我们使用self指针获取_age,那么返回的就必定我们的成员变量_age了。

    
    #import <Foundation/Foundation.h>
    
    
    @interface People : NSObject
    {
        int _age;
    }
    
    - (void)setAge:(int)age;
    - (int)age;
    
    @end
    
    
    @implementation People
    
    
    - (void)setAge:(int)age
    {
        _age = age;
    }
    
    - (int)age
    {
        int _age = 10;
        return self->_age;
    }
    
    @end
    
    
    int main()
    {
        People *p = [People new];
        [p setAge:26];
        int age = [p age];
        NSLog(@"年龄为:%d",age);
        return 0;
    }

    P1

作用2

在成员方法里,如果需要调用其他的成员方法,可以使用self

  • 调用成员方法1,让成员方法1再调用成员方法2

    
    #import <Foundation/Foundation.h>
    
    
    @interface People : NSObject
    - (void)fun1;
    - (void)fun2;
    @end
    
    
    @implementation People
    
    
    - (void)fun1
    {
        NSLog(@"执行了第一个方法");
        [self fun2];
    }
    
    - (void)fun2
    {
        NSLog(@"执行了第二个方法");
    }
    
    @end
    
    
    int main()
    {
        People *p = [People new];
        [p fun1];
        return 0;
    }

    P2

作用3

在类方法里,如果需要调用其他的类方法,可以使用self

  • 调用类方法1,让类方法1再调用类方法2

    
    #import <Foundation/Foundation.h>
    
    
    @interface People : NSObject
    + (void)fun1;
    + (void)fun2;
    @end
    
    
    @implementation People
    
    
    + (void)fun1
    {
        NSLog(@"执行了第一个类方法");
        [self fun2];
    }
    
    + (void)fun2
    {
        NSLog(@"执行了第二个类方法");
    }
    
    @end
    
    
    int main()
    {
        [People fun1];
        return 0;
    }

    P3

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
函数的关键字参数
def func1(name, age, sex, *args): ''' 打印姓名,年龄,性别 ''' print(name) print(age) print(sex) # func1('python', 28,sex='man','s','2...
859 0
instanceof、final关键字
instanceof关键字 作用:判断一个对象是否属于指定的类型 instanceof关键字的使用前提:判断的对象与指定的类型必须存在继承的关系,或者实现的关系 instanceof关键字使用格式: 对象 instanceof 类名; instanceof关键字的作用:做类型转换之前先判断,否则容易报错。
518 0
Demo源码放送:打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
  随着HTML5 WebSocket技术的日益成熟与普及,我们可以借助WebSocket来更加方便地打通BS与CS -- 因为B/S中的WebSocket可以直接连接到C/S的服务端,并进行双向通信。
917 0
Ruby学习_self
self上下文      Ruby的self有和Java的this相似之处,但又大不相同。Java的方法都是在实例方法中引用,所以this一般都是指向当前对象的。而Ruby的代码逐行执行,所以在不同的上下文(context)self就有了不同的含义,先来看看常见的context self都代表哪些...
651 0
js+正文规则 高亮搜索关键字
采用的:  function HighlightText(obj,keyword)   {  if(document.referrer){    var reg=new RegExp(keyword,"g"); //创建正则RegExp对象    var regdx=keyword;    var data=document.
853 0
js+正文规则 高亮搜索关键字(二)
【原创】JavaScript高亮搜索关键字(改进版) [2009-1-6 16:25:00] by mwfls 11 我顶 .maks { line-height: 150%; padding: 10px; }.
1026 0
206
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载