this关键字和构造方法

this关键字

this代表当前类的引用对象

复制代码
class User{
    private String username;

    public void setUsername(String username) { 
    username
=username;
  }
  public String getUsername() {
    
return username;
  }
}
复制代码
    public static void main(String[] args) {
        User user = new User();
        user.setUsername("张三");
        System.out.println(user.getUsername());
    }

运行结果:

 

 

 在这个程序中运行结果为null,证明没有获取传递的值,

在调用setUsername的时候成员变量和局部变量名称相同,

成员变量没有获取到对应的值。

    public void setUsername(String username) {
        this.username = username;
    }

当使用this关键字后就可以让成员变量获取到传递的值

运行结果:

 

 为什么要使用this关键字:

1、成员变量和局部变量重名

2、创建任意一个对象默认都会创建一个this引用的指向同一个堆区空间

3、this的设计相识于生活中的代词:我的

4、默认一个类的成员省略掉this关键字

5、this只能出现在类的内部

 

this的本质就是一个对象,引用,实例,变量。只不过和创建的对象指向了同一个块堆区的空间,

使用this对堆的空间做了修改那么—样会修改对象本身。

应用场景:

1.当成员变是和局部变量重名的情况

2.当需要在类的内部访问本类的成员(成员变量和成员方法)

3.this访问本类的构造方法的时候

 

 

构造方法

如果成员变量太多,通过set方法来进行赋值太麻烦,这个时候就需要填写构造方法

复制代码
class Admin{
private String name;
private int age;
private String sex;

//无参构造
public Admin() {
}
//有参构造
public Admin(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}
}
复制代码

如果不添加构造方法那么系统就会自动给我们提供一个无参构造方法,

当我们填写有参构造方法后,那么系统默认的无参构造方法就会失效,

所以当填写有参构造后还须填写无参构造方法。

    public static void main(String[] args) {
        Admin admin = new Admin();
    }

运行结果:

 

 当我们没有给对象进行赋值时,那么无参构造方法就会默认执行

同样我们也可以使用有参构造方法进行赋值

    public static void main(String[] args) {
        Admin admin = new Admin("张三",18,"男");
    }

 

构造方法的作用:

能够在对象创建之后对对象的成员变量快速的赋值

构造方法的特点:

1.构造方法没有返回值,连void关键字也没有

2.方法名必须和类名相同

3.方法体一般都是用来给成员变量赋值的

4.如果我们没有自己添加构造方法,系统会默认给我们提供一个无参的构造方法

5.如果我们自己添加了构造方法,那么会覆盖掉系统提供的默认的构造方法

6.构造方法可以重载

7.可以通过this关键来实现构造器相互之间的调用,但是只能放置在构造方法的第一行

 

同样也可以使用this关键字来进行调用无参构造方法

    //有参构造
    public Admin(String name, int age, String sex) {
        this();
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    public static void main(String[] args) {
Admin admin = new Admin("张三",18,"男");
}

那么在调用有参构造方法的时候就会连同无参构造方法一起执行

运行结果:

 

 

posted @   xjw12345  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示