2018-04-30

this关键字

什么是this:

  表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性。

this主要存在于两个地方:

  1)构造函数:此时this表示调用当前创建的对象

  2)成员方法中:对象a调用this所在的方法,此时this就表示对象a

当一个对象创建以后,JVM会自动分配一个引用当前对象的this

内存分析:

  

this的使用:

1)使用this区分同名变量

  成员变量与局部变量(参数),重名时,希望在方法内部调用成员变量

 1 class Person {
 2     private int age = 10;
 3     public Person(){
 4     System.out.println("初始化年龄:"+age);
 5 }
 6     public int GetAge(int age){
 7         this.age = age;
 8         return this.age;
 9     }
10 }
11
12 public class test1 {
13     public static void main(String[] args) {
14         Person Harry = new Person();
15         System.out.println("Harry's age is "+Harry.GetAge(12));
16     }
17 }  

运行结果:

初始化年龄:10
Harry's age is 12

可以看到,这里age是GetAge成员方法的形参,this.age是Person类的成员变量。

  

2)作为方法名来初始化对象(构造器重载的方法)

  也就是相当于调用本类的其它构造方法,它必须作为构造方法的第一句。

3)作为参数传递

  需要在某些完全分离的类中调用一个方法,并将当前对象的一个引用作为参数传递时。

参考:

https://www.cnblogs.com/hasse/p/5023392.html(this和super的用法总结)

http://www.weixueyuan.net/view/5988.html

转载于:https://www.cnblogs.com/sunNoI/p/8974459.html

二、Java面向对象(7)_封装思想——this关键字相关推荐

  1. 20175333曹雅坤 实验二 Java面向对象程序设计

    实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...

  2. java面向对象实验结论及心得_20162305 实验二 Java面向对象程序设计 实验报告

    20162305 实验二 Java面向对象程序设计 实验报告 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D ...

  3. 20145206《Java程序设计》实验二Java面向对象程序设计实验报告

    20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

  4. 20135234mqy 实验二 Java面向对象程序设计

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1352  姓名:mqy  学号:20135234 成绩:             指导教师:娄嘉 ...

  5. Java面向对象(二)面向对象的特征 --- 封装 、 继承、 多态

    面向对象的特征:封装.继承.多态.(抽象) 一.封装 体现形式: 函数 --- 提高代码的复用性. 属性的私有化 --- 将属性设为私有,通过提供对外的访问方法来间接操作对象属性,可以再方法内对属性做 ...

  6. java面向对象程序_面向对象编程基础(java)

    面向对象编程基础 1.1 面向对象概述 在程序开发初期,大家使用的是结构化开发语言,也就是面向过程(opp),但随着市场需求剧增,软件的规模也越来越大,结构化语言的弊端也暴露出来. 开发周期无休止的拖 ...

  7. Java面向对象程序设计实训教程_JAVA课程实验报告 实验二 JAVA面向对象程序设计...

    课程:Java程序设计  班级:1352  姓名:黄伟业  学号:20135315 成绩:             指导教师:娄嘉鹏    实验日期:2015.5.7 实验密级:         预习 ...

  8. java面向对象编程_包_继承_多态_重载和重写_抽象类_接口_this和super

    目录点击跳转 包 包的命名方法 导入包中的类 系统包的介绍 **注意事项** 继承 基础知识 构造方法 **基础语法** `protected`修饰符 组合 `this`和`super`关键字 `th ...

  9. 实验二 Java面向对象程序设计

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计                         班级:1353            姓名:陈巧然     ...

最新文章

  1. interrupt分析
  2. Vue 全家桶 + Express 实现的博客
  3. Linux下C程序的链接过程
  4. NET中解决KafKa多线程发送多主题的问题
  5. Jury Compromise POJ - 1015
  6. ubuntu11.10 源码编译安装php5.3.8,Ubuntu 11.10编译安装Nginx、PHP 5.3.8、MySQL、MongoDB、Memcached、SSL、SMTP...
  7. 内连接、左外连接、右外连接、交叉连接区别
  8. php书签源码,OneNav简约PHP导航书签源码
  9. Python-Anaconda练习candy算子用于边缘提取,再用hough变换检测直线边缘
  10. PostgreSQL学习总结(7)—— PostgreSQL 语句 INSERT INTO、SELECT、UPDATE、DELETE 等学习
  11. sql批量插入防止重复插入_使用SQL批量插入锁定配置
  12. 为什么外链建设要灵活多变呢?
  13. 安鸾渗透实战平台--综合渗透--企业网站渗透流程
  14. Label free定量蛋白质组学
  15. 解决Worm.Win32.AutoRun.soq 病毒
  16. matlab时间延迟怎么写,大家帮我看一下这个c_c方法时间延迟的程序运行结果??...
  17. web前端学习到什么程度可以面试工作
  18. 从消防水管喝水mysql_再见MYSQL - 06 - 查询性能优化
  19. GDB多线程调试(调试命令+调试演示)
  20. Linux上使用docker运行酷Q机器人

热门文章

  1. 请使用frameset/frameset完成以下功能
  2. iOS—如何申请苹果公司开发者账号流程详细图文介绍(包括邓白氏编码的申请方法详细介绍)...
  3. ssl以及构建私有CA
  4. 如何制作在线参考手册
  5. Style Intelligence 10特点之用户自定义报表
  6. 3550配置DHCP
  7. 敏捷开发签名人建议开发者放弃“敏捷”
  8. AAuto如何设置combobox
  9. 006.递归和分治思想
  10. C笔记(2014-12备份)