• Java当中:this关键字


    Java中的this用于类中的方法体内,当一个对象被创建后,Java虚拟机就会给这个对象分配一个引用自身的指针,这个指针的名字就是this,this指向对象本身,this主要可以实现一下三个方面的功能!!

    1. 访问类的成员变量!
    2. 简化重载的构造方法!
    3. 作为参数传递给其他对象或方法!

     1.访问类的成员变量!

     当类中使用类成员变量时,引方式是this.变量名(注意:点号!!),一般情况下,可以把this省略。但是当成员方法或构造方法中的局部变量与类成员变量同名时,类的成员变量就会被隐藏!此时,若要访问类的成员变量,则必须要有“this.变量名”的方式显示调用成员变量!

    1. public class Book{
    2. public String title;
    3. public Book (String title) {
    4. this.title=title;
    5. }
    6. }

    上述代码段中的:this.title=title; 语句的含义就是将参数:title 的赋值给对象的成员变量title,关键字this代表了实列化Book的当前对象!

    2.简化重载的构造方法!

    this可以用在构造方中, 以调用一个类中的另一个构造方法,必须注意的是,调用时this必须放在方法的第一句

    下面笔者用代码来举列一下:this调用构造方法!

    1. public class Book{
    2. public String title;
    3. public Book (String title) {
    4. this.title=title;
    5. }
    6. public Book() {
    7. this("面向对象编程!");
    8. }
    9. public void printTitle() {
    10. System.out.println(title);
    11. }
    12. public static void main(String[] args) {
    13. Book book1 =new Book();
    14. book1.printTitle();
    15. }
    16. }

    上述代码的运行结果为:

     在上述代码中,Book类中,有两个重载的构造方法,当实列化book1对象时,调用用的是无参构造方法,其中,无参构造方法内部的第一句是调用对应的有参构造方法,设置title的值为:“面向对象编程”,因此,book1对象的printTitle()方法输出的值为:“面向对象编程”!

    3.作为参数传递给其他对象或方法!

    this可以把当前对象的引用作为参数传递给其他对象或方法,这种情况发生在两个类之间互相传递对方的信息,如方法或变量等!

    下面用代码讲解一下:

    1. class Container {
    2. Component comp;
    3. public void addComponent() {
    4. comp = new Component(this);//将this作为对象引用传递
    5. }
    6. }
    7. class Component {
    8. Container myContainer;
    9. public Component(Container c) {
    10. myContainer = c;
    11. }
    12. public static void main(String[] args) {
    13. Container c1 = new Container();
    14. c1.addComponent();
    15. }
    16. }

    对于上述的代码:容器类  Container 里面有个方法:addComponent ,含义是将组件加入当前这个容器对象,因此需要实列化租价 类 Component , Component类是一个组件类,当他在实列化时必须依附于一个容器,因此在构造函数需要传递一个容器对象,当:new Component(this) 中的this作为实列化组件时,指定其依附的容器对象就是当前的容器对象!!

  • 相关阅读:
    智能文档控制——文档的智能归档、捕获、索引、访问和协作
    adb shell run-as
    目标检测算法——工业缺陷数据集汇总1(附下载链接)
    正点原子Linux MINI板系统固化(烧录uboot、linux kernel、.dtb(设备树)和 rootfs)
    EPOLL单线程版本 基于reactor 的 httpserver文件下载 支持多个客户端同时处理
    React报错之Parameter 'event' implicitly has an 'any' type
    基于C++实现简易语法分析程序
    Vue3.0学习笔记
    Reids实战——优惠券秒杀(全局唯一ID生成策略)
    JDBC编程
  • 原文地址:https://blog.csdn.net/weixin_64308540/article/details/127830403