zoukankan      html  css  js  c++  java
  • this keyword details

    学生类:
    package com.itheima_07;
    /*
     * 学生类
     * 
     * 起名字我们要求做到见名知意。
     * 而我们现在的代码中的n和a就没有做到见名知意,所以我要改进。
     * 
     * 如果有局部变量名和成员变量名相同,在局部使用的时候,采用的是就近的原则。
     * 
     * 我们有没有办法把局部变量的name赋值给成员变量的name呢?
     * 有。
     * 
     * 什么办法呢?
     *         用this关键字就可以解决这个问题
     * 
     * this:代表所在类的对象引用
     *         方法被哪个对象调用,this就代表那个对象
     * 
     * 使用场景:
     *         局部变量隐藏成员变量
     */
    public class Student {
        private String name;
        private int age;
        
        public void setName(String name) { //"林青霞"
            //name = name;
            this.name = name;
        }
        
        public String getName() {
            return name;
        }
        
        public void setAge(int age) {
            //age = age;
            this.age = age;
        }
        
        public int getAge() {
            return age;
        }
    }
    package com.itheima_07;
    /*
     * 学生类的测试类
     */
    public class StudentDemo {
        public static void main(String[] args) {
            //创建对象
            Student s = new Student();
            System.out.println(s.getName()+"---"+s.getAge());
            
            s.setName("林青霞");
            s.setAge(28);
            System.out.println(s.getName()+"---"+s.getAge());
        }
    }

    首先setXxx和getXxx方法是为了数据的安全性,其次为了让名字做到见名知意,将a改成了age,n改成了name。输出结果相当于没有对name或者age赋值,这是因为在setName()和setAge()中的name和age都是局部变量,而不是让局部变量的值赋值给了这个类的成员变量,所以为了解决这个问题这里引入了this关键字就彻底解决了这个问题。this..name = name;因为this代表所在类的对象引用,所以this.name就是成员变量的name,而后面的name采用就近原则指的是局部变量的name。s来调用setName()方法,this就代表这个s。使用场景就是局部变量隐藏了成员变量。

  • 相关阅读:
    python 关于文件操作
    python2 编码与解码
    Git系列(二) 冲突解决
    异步回调机制分析
    CSS盒子模型理解
    Git多人协同开发模型
    CSS连载控制背景与CSS精灵
    函数调用在回调,委托与事件在程序设计中的应用
    TFS与Git结合进行代码管理
    Git系列之(二)Git协议与工作协同
  • 原文地址:https://www.cnblogs.com/lzp123456-/p/9739674.html
Copyright © 2011-2022 走看看