/*
* 学生类
*
* 起名字我们要求做到见名知意。
* 而我们现在的代码中的n和a就没有做到见名知意,所以我要改进。
*
* 如果有局部变量名和成员变量名相同,在局部使用的时候,采用的是就近的原则。
* 我们有没有办法把局部变量的name赋值给成员变量的name呢?
* 有。
*
* 什么办法呢?
* 用this关键字就可以解决这个问题
*
* this:代表所在类的对象引用
* 方法被哪个对象调用,this就代表那个对象
*
* 使用场景:
* 局部变量隐藏成员变量
*/
/*
* 构造方法:
* 给对象的数据进行初始化
*
* 格式:
* 方法名和类名相同
* 没有返回值类型,连void都不能写
* 没有具体的返回值
*
* 构造方法的注意事项:
* A:如果我们没有给出构造方法,系统将会提供一个默认的无参构造方法供我们使用。
* B:如果我们给出了构造方法,系统将不在提供默认的无参构造方法供我们使用。
* 这个时候,如果我们想使用无参构造方法,就必须自己提供。
* 推荐:自己给无参构造方法
* C:构造方法也是可以重载的
*
* 成员变量赋值:
* A:setXxx()方法
* B:带参构造方法
*/
public class ThisDemo { private String name; private int age; //1.构造方法: public ThisDemo() {} public ThisDemo(String name,int age) { this.name = name; this.age = age; } //2.成员方法: public void setName(String name) { // name = name; this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } }
public class ThisUse { public static void main(String[] args) { //1.带参构造 ThisDemo t2 = new ThisDemo("小明",15); System.out.println(t2.getName()+","+t2.getAge()); //2.无参+setXxx() ThisDemo t = new ThisDemo(); t.setName("林青霞"); t.setAge(28); System.out.println(t.getName()+","+t.getAge()); } }
输出如下: