一、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://blog.51cto.com/fengsonglin/1689520

08.self关键字相关推荐

  1. Java查漏补缺(08)关键字:static、单例设计模式、理解main方法、类的成员之四:代码块、final关键字、抽象类、接口、内部类、枚举类、注解、包装类

    Java查漏补缺(08)关键字:static.单例设计模式.理解main方法.类的成员之四:代码块.final关键字.抽象类.接口.内部类.枚举类.注解.包装类 本章专题与脉络 1. 关键字:stat ...

  2. python怎么把字体变大_idle怎样设置代码字体大小 颜色 又快又好

    今天小编我看到idle字体有点细微,就随手修改放大字体好让自己看得舒服.下面小编我就分享这篇关于 idle设置代码字体大小和字体颜色的给大伙. 工具/材料 电脑 python3.x idle 操作方法 ...

  3. 第一阶 08 单例模式、递归、方法参数和this等关键字

    学习目标 1.掌握方法的可变参数定义及使用 2.掌握递归算法以及其他优缺点 3.掌握构造方法的定义及使用 4.掌握this.static.package.import关键字 5.熟练实现一些常用算法 ...

  4. java的static关键字

    java的static关键字 静态变量和静态方法 static关键字最基本的用法是: 1.被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来 2.被static ...

  5. c#中volatile关键字的作用

    恐怕比较一下volatile和synchronized的不同是最容易解释清楚的.volatile是变量修饰符,而synchronized则作用于一段代码或方法:看如下三句get代码: int i1;  ...

  6. SQL系列ROLLUP关键字

    为什么要引入ROLLUP? 可方便的生成"合计"."小计"."总计" 等混合统计的报表 如下数据集A经过ROLLUP运算可生成数据集B 接下 ...

  7. winform 多个关键字的高亮显示

    在textBox1输入几个关键字,点击button1查询,这几个关键字在 richTextBox1中高亮显示,代码如下: private string GaoL = null; private voi ...

  8. java--static关键字

    static关键字可以用来修饰类的变量,方法和内部类.static是静态的意思,也是全局的意思它定义的东西,属于全局与类相关,不与具体实例相关.就是说它调用的时候,只是ClassName.method ...

  9. java中的多线程(转自http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html)

    在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口. 对于直接继承Thread的类来说,代码大致框架是: 1 2 3 4 5 6 7 8 9 10 11 ...

最新文章

  1. Python源码学习:内建类型简析并简析int对象
  2. 字符变量赋值规则_Java的常量、变量、数据类型(基础篇二)
  3. 线性代数应该这样讲(四)-奇异值分解与主成分分析
  4. 怎么隐藏Windows11开始菜单中的推荐面板
  5. SQL Server中的数据层应用程序简介
  6. Test.ai完成1100万美元A轮融资,Google人工智能基金领投
  7. 对着IDEA 配置方式
  8. Linux学习笔记(七)Linux常用命令:挂载命令
  9. 树莓派4B Ubuntu20.04 ROS2 RTABMAP realsense d455
  10. linux mysql 光盘安装教程_Linux上mysql安装详细教程
  11. 论文总结之任务型对话NLU
  12. PCB设计笔记-AD(一)-如何从立创EDA中将元器件导入AD中
  13. 微信小程序开发之——婚礼邀请函-邀请函页面(4.3)
  14. 阿里云服务器学生应该怎么购买教程以及将远程主机配置成服务器教程
  15. 音频-基于Core Audio技术采集音频(版本2)
  16. 细数二十世纪最伟大的10大算法(Top10)
  17. 华为p9 html尺寸,华为P9 Plus的屏幕尺寸是多少
  18. 立即升级 NGINX 以应对漏洞风险
  19. 【方案分享】2021AMII品牌女装抖音直播间运营方案.pptx
  20. 499张WEBP格式动漫图片

热门文章

  1. [置顶] C#中Socket服务端代码分享
  2. 为RecyclerView添加下拉刷新(PullToRefresh)功能
  3. Asp.Net 数据分页
  4. linux虚拟机时间同步
  5. 这是mac 重置mysql 的三种做法
  6. bootstrap+fileinput插件实现可预览上传照片功能
  7. asp.net c# 打开新页面或页面跳转
  8. Java基础学习路线送给零基础的朋友
  9. Docker安装mysql8
  10. java 兔子生仔问题