zoukankan      html  css  js  c++  java
  • 00048_this关键字

    1、this调用构造方法

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

      (2)构造方法调用格式

    this(参数列表);

      (3)小案例

     1 class Person {
     2     // Person的成员属性
     3     private int age;
     4     private String name;
     5 
     6     // 无参数的构造方法
     7     Person() {
     8     }
     9 
    10     // 给姓名初始化的构造方法
    11     Person(String nm) {
    12         name = nm;
    13     }
    14 
    15     // 给姓名和年龄初始化的构造方法
    16     Person(String nm, int a) {
    17         // 由于已经存在给姓名进行初始化的构造方法 name = nm;因此只需要调用即可
    18         // 调用其他构造方法,需要通过this关键字来调用
    19         this(nm);
    20         // 给年龄初始化
    21         age = a;
    22     }
    23 }

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

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

     1 class Person {
     2     private int age;
     3     private String name;
     4 
     5     // 给姓名和年龄初始化的构造方法
     6     Person(String name, int age) {
     7         // 当需要访问成员变量是,只需要在成员变量前面加上this.即可
     8         this.name = name;
     9         this.age = age;
    10     }
    11 
    12     public void speak() {
    13         System.out.println("name=" + this.name + ",age=" + this.age);
    14     }
    15 }
    16 
    17 class PersonDemo {
    18     public static void main(String[] args) {
    19         Person p = new Person("张三", 23);
    20         p.speak();
    21     }
    22 }

    3、在Person类中定义功能,判断两个人是否是同龄人

     1 class Person {
     2     private int age;
     3     private String name;
     4 
     5     // 给姓名和年龄初始化的构造方法
     6     Person(String name, int age) {
     7         // 当需要访问成员变量是,只需要在成员变量前面加上this.即可
     8         this.name = name;
     9         this.age = age;
    10     }
    11 
    12     public void speak() {
    13         System.out.println("name=" + this.name + ",age=" + this.age);
    14     }
    15 
    16     // 判断是否为同龄人
    17     public boolean equalsAge(Person p) {
    18         // 使用当前调用该equalsAge方法对象的age和传递进来p的age进行比较
    19         // 由于无法确定具体是哪一个对象调用equalsAge方法,这里就可以使用this来代替
    20         /*
    21          * if(this.age == p.age) { return true; } return false;
    22          */
    23         return this.age = p.age;
    24     }
    25 }
  • 相关阅读:
    [ Algorithm ] N次方算法 N Square 动态规划解决
    [ Algorithm ] LCS 算法 动态规划解决
    sql server全文索引使用中的小坑
    关于join时显示no join predicate的那点事
    使用scvmm 2012的动态优化管理群集资源
    附加数据库后无法创建发布,error 2812 解决
    浅谈Virtual Machine Manager(SCVMM 2012) cluster 过载状态检测算法
    windows 2012 r2下安装sharepoint 2013错误解决
    sql server 2012 数据引擎任务调度算法解析(下)
    sql server 2012 数据引擎任务调度算法解析(上)
  • 原文地址:https://www.cnblogs.com/gzdlh/p/8082128.html
Copyright © 2011-2022 走看看