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。使用场景就是局部变量隐藏了成员变量。

  • 相关阅读:
    脚本,网络配置,指令
    拦截TextBox 双击消息
    VB指针操作和消息钩子
    文件和文件夹操作
    常见反编译产生错误 k__BackingField 解决办法
    关机/重启/注销
    通用命名前缀
    语言区域代码
    常用数据库链接字符串
    用VB实现COM+组件配置
  • 原文地址:https://www.cnblogs.com/lzp123456-/p/9739674.html
Copyright © 2011-2022 走看看