zoukankan      html  css  js  c++  java
  • 关于构造函数的理解

    构造函数答疑解惑:http://www.cnblogs.com/ibelieve618/p/6364541.html

    用术语解释只会让初学者听得满头包,我也说说吧,慢慢的来了解,弄清楚每一个东西是什么,再你往下看前你必须确定你自己有足够的耐心,呵呵,刚起步都很累的。

    借用yzbczq朋友的例子:
    public class People{
    String name;
    //这个name这就是我们说的类的成员变量(也叫类的属性)

    public void getName(String name){
    //这里的是name是一个参数,是getName这一个方法(也叫函数)的一个参数(变量),跟上面的name不是一样的东西!你必须弄清楚现在有两个变量(参数)的存在

    this.name = name;
    }
    }
    好了,然后到问题来了这时候我们有一个成员变量,跟一个方法里面的局部变量(先弄清楚我说的两个东西分别是什么,不然别往下看),但是它们的名字是一样的!
    好了,我们先别管this,如果我们有一个这个类的实例对象叫person(所谓类的对象,就是根据什么People这一个类(图纸)所制造出来的实例),那么这时候
    this.name=name的意思也就相当于person.name,现在知道this说的是什么了吧?然后后面的那个name就是我们那个函数方法里面的参数,如果我们getName(String x),把这个name改名成为x,那么我们可以写成:
    name = x,为什么此时可以直接用name呢?因为name是我们People这个类中的一个成员变量,而我们getName这里面没有一样名为name的变量,它就会直接引用我们的成员变量了。但是如果getName这个函数里面也定义了一个同名为name的变量,那么!这个函数就会以它自身的这个变量为准,所以如果在你的原例子中不用this,那么在这个函数里面不就是相当于说,我的一个变量等于它自己本身,这不是废话吗?

    好了,我们再说this,this就是说现在这个实例(还记得实例把,我们这里的实例名字叫person),我们的getName可不止只有person这个实例引用的啊,如果我们写成person.name=name,那么如果我创建一个名字叫person2的实例,引用这个函数会是什么样的情况?那么现在明白this的作用了吧,它就是“我”的意思,你说的我,跟我本人说的我,都是我(都是this),但却指代了不同的东西。

    呵呵,说得有点罗嗦了,但是,应该能看懂了吧。你这个this.name=name是在一个方法里面的吧,有点想起张孝祥的那个教程。

  • 相关阅读:
    Spring中的Bean的配置形式
    使用外部属性文件配置Bean以及Bean的生命周期方法
    运行时找到main方法所在的类
    获取SpringMVC中所有RequestMapping映射URL信息
    RequestBody只能读取一次的问题
    接口标记为@ResponseBody却不进入ResponseBodyAdvice
    springboot打成jar包后无法解压
    Springboot打包执行源码解析
    关于base64的一个小细节
    Liquibase使用入门
  • 原文地址:https://www.cnblogs.com/cherishforchen/p/9915203.html
Copyright © 2011-2022 走看看