zoukankan      html  css  js  c++  java
  • java -> this关键字

    this关键字

      在之前学习方法时,我们知道方法之间是可以相互调用的,那么构造方法之间能不能相互调用呢?若可以,怎么调用呢?

    this调用构造方法

      在之前学习方法之间调用时,可以通过方法名进行调用。可是针对构造方法,无法通过构造方法名来相互调用。

      构造方法之间的调用,可以通过this关键字来完成。

      构造方法调用格式:

      this(参数列表);

      构造方法的调用

      class Person {

          // Person的成员属性

          private int age;

          private String name;

          // 无参数的构造方法

          Person() {

          }

     

          // 给姓名初始化的构造方法

          Person(String nm) {

              name = nm;

          }

        // 给姓名和年龄初始化的构造方法

        Person(String nm, int a) {

            // 由于已经存在给姓名进行初始化的构造方法 name = nm;因此只需要调用即可

            // 调用其他构造方法,需要通过this关键字来调用

            this(nm);

            // 给年龄初始化

            age = a;

        }

    }

    注意:

      this到底代表什么呢?this代表的是对象,具体代表哪个对象呢?哪个对象调用了this所在的方法,this就代表哪个对象

      调用其他构造方法的语句必须定义在构造方法的第一行,原因是初始化动作要最先执行

    成员变量和局部变量同名问题

      通过上面学习,基本明确了对象初始化过程中的细节,也知道了构造方法之间的调用是通过this关键字完成的。但this也有另外一个用途,接下来我们就学习下。

      当在方法中出现了局部变量和成员变量同名的时候,那么在方法中怎么区别局部变量成员变量呢?可以在成员变量名前面加上this.来区别成员变量和局部变量

      class Person {

          private int age;

          private String name;

     

        // 给姓名和年龄初始化的构造方法

        Person(String name, int age) {

            // 当需要访问成员变量是,只需要在成员变量前面加上this.即可

            this.name = name;

            this.age = age;

        }

     

        public void speak() {

            System.out.println("name=" + this.name + ",age=" + this.age);

        }

    }

     

    class PersonDemo {

        public static void main(String[] args) {

            Person p = new Person("张三", 23);

            p.speak();

        }

    }

  • 相关阅读:
    关于掌握C#的内存堆栈概念
    sqlserver 跨服务器查询
    写单元测试的知识结构(2)——单元测试工具的选用(找个顺手的)
    写单元测试的知识结构(1) —— 单元测试用处
    如何能保证自己的功能代码不出纰漏
    Mysql查询架构信息
    Mysql 分组查询最高分
    Mysql按照字段值做分组行转列查询
    软件测试学习笔记:主路径测试
    软件测试学习笔记:Junit入门
  • 原文地址:https://www.cnblogs.com/miaoxingren/p/9375408.html
Copyright © 2011-2022 走看看