public class Test{
public static void main(String args[]){
int age=10;
String name="李四";
Student stu=new Student(name,age);
System.out.println("student属性name:"+stu.name+"age"+stu.age);
}
}
class Student{
String name="张三”;
int age=18;
System.out.println("传入的name:"+name+"age"+age);
}
}
此时会输出 李四 10
张三 18
这时候我们发现在构造方法时name,age没有设置成功
怎末解决这个问题,引入this 关键字
成员变量就是对象的属性
public class Test{
int age=11;
public static void main(String args[]){
int age=10;//属于局部变量
}
}
class Person{
String name;
int age;//Person类的成员变量
}
this 指的是自身,this.属性访问的是自己的属性
this()访问的就是自己的无参构造方法
classPerson{
String name;
public Person(String name){
this.name=name;}//this.name表示自身的name属性
public class HelloWorld{
public static void main(String args[]){
Person p=new Oerson("张三“);
System.out.println(p.name);
}
}
class Person{
Stering name;
public Person(){
System.out.println("I am");
}
public Person (String name){
this();//调用构造方法只能写在第一行
this.name=name;
}
}
此时会输出张三
如果改为name=name;
结果会输出null
this()会调用Person自己无参构造方法
this.name访问的是Person对象的name;
编程要求
右侧编辑器中已经编写好了代码,但是输出结果不能让我们满意,请根据所学知识修改代码,使其能输出如下结果: 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();//由于没有Person的无参构造方法,所以不再用this();
this.age=age;
this.name = name;
this.sex = sex;
}
public Person(int age){
this.age = age;
}
public void display(){
String name = "李四";
int age = 11;
String sex = "男";
System.out.println("name:" + this.name);
System.out.println("age:" + this.age);
System.out.println("sex:" + this.sex);
}
/********** End **********/
}