第4关:This关键字

任务描述
相关知识
什么是成员变量
this关键字
编程要求
测试说明
任务描述
本关任务:使用this关键字,设置对象的成员变量。

相关知识
我们先来看一段代码:

输出结果:
传入的name:李四age:10
student属性name:张三age:18

上述结果我们可以发现一个问题,在构造方法中name和age并没有设置成功,stu对象的name属性和age属性的值还是默认定义好的张三和18。

怎么解决这个问题呢?你需要学习两个知识点:1.什么是成员变量; 2.this关键字。

什么是成员变量
成员变量就是对象的属性:

this关键字
关于this关键字,你只需要记住它就是指自身,this即代表自己,this.属性访问的是自己的属性、this()访问的就是自己的无参构造方法。

例1:this.属性

例2:this.属性,this()

输出:
I am
张三

可以发现,如果我们把上述this.name = name改为 name = name,那么最终的结果就变成了:
I am
null

this()调用的是Person自己的无参构造方法,this.name访问的是Person对象自身的name,而方法参数中的name则表示方法传入的值。

学会了this关键字的用法,那本关最开始遇到的问题是不是就有解了呢?

编程要求
右侧编辑器中已经编写好了代码,但是输出结果不能让我们满意,请根据所学知识修改代码,使其能输出如下结果:
name:baby
age:45
sex:女

测试说明
测试输入:
baby,45,女
预期输出:
name:baby
age:45
sex:女

package step3;

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String name = sc.next();
		int age = sc.nextInt();
		String sex = sc.next();
		Person p = new Person(name,age,sex);
		p.display();
	}
}

class Person{
	String name = "张三";
	int age = 18; 
	String sex = "男";
	/********** Begin **********/

	public Person(String name,int age,String sex){
        this(age);
		this.name =name;
		this.sex = sex;
	}
	
	public Person(int age){
		this.age = age;
	}
	
	public void display(){
	
		System.out.println("name:" + name);
		System.out.println("age:" + age);
		System.out.println("sex:" + sex);
	}


	/********** End **********/
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值