Saul's blog Saul's blog
首页
后端
分布式
前端
更多
分类
标签
归档
友情链接
关于
GitHub (opens new window)

Saul.J.Wu

立身之本,不在高低。
首页
后端
分布式
前端
更多
分类
标签
归档
友情链接
关于
GitHub (opens new window)
  • Java入门基础

    • 计算机常识

    • Java语言概述

    • 基本语法

    • 数组

    • 面向对象

      • 面向对象
      • 类和对象
      • 类的成员-属性
      • 类的成员-方法
      • 类的成员-构造器
      • 面向对象特性-封装
      • this关键字
        • 前言
        • this是什么?
        • 为什么要有this
        • 使用this调用本类的构造器
      • package关键字
      • import关键字
      • 面向对象特征-继承
      • 方法的重写
      • 访问权限修饰符
      • super关键字
      • 子类对象实例化的全过程
      • 面向对象特征-多态
      • 强制类型转换
      • Object类
      • 包装类
      • static关键字
      • 单例设计模式
      • main方法
      • 类的成员-代码块
      • final关键字
      • 抽象类与抽象方法
      • 接口
      • 类的成员-内部类
    • 异常处理

  • Java核心基础

  • 设计模式

  • Web开发

  • SpringBoot

  • 微服务

  • Elasticsearch

  • 运维

  • 后端
  • Java入门基础
  • 面向对象
SaulJWu
2020-12-11

this关键字

# 前言

前面我们学习了构造器,接下来学习关键字。

# this是什么?

this其实是一个指针。

在Java中,this关键字比较难理解,它的作用和其词义很接近。可以理解为==当前对象==或==当前正在创建的对象==。

  • 它在方法内部使用,即这个方法所属对象的引用;
  • 它在构造器内部使用,表示该构造器正在初始化的对象。

作用

this 可以调用类的属性、方法和构造器

# 为什么要有this

什么时候使用this关键字呢?

当形参与成员变量同名时,如果在方法内或构造器内需要使用成员变量,必须添加this来表明该变量是类的成员变量。

当在方法内需要用到调用该方法的对象时,就用this。

具体的:我们可以用this来区分==属性==和==局部变量==。

  • 在任意方法或构造器内,如果使用当前类的成员变量或成员方法可以在其前面添加this,==增强程序的阅读性==。通常情况下,我们都选择省略this。
  • ==使用this访问属性和方法时,如果在本类中未找到,会从父类中查找==

使用this,调用属性、方法

package constructors;

public class Person {
    private String name;
    private int age;

    public Person() {
    }

    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;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 使用this调用本类的构造器

this==可以==作为一个类中构造器相互调用的特殊格式

package constructors;

public class Person {
    private String name;

    private int age;

    /**
     * 无参构造器
     */
    public Person() {
        System.out.println("调用了无参构造器");
    }

    public Person(String name) {
        this();//调用本类中的无参构造器
        System.out.println("调用了带name的构造器");
        this.name = name;
    }

    public Person(String name, int age) {
        this(name);  // 调用有一个参数的构造器
        System.out.println("调用了带name和age的构造器");
        this.name = name;
    }

    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;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

注意:

  • 在类的一个构造器中,可以在类的构造器中使用"this(形参列表)"的方式,调用本类中重载的其他的构造器!
  • 在类的一个构造器中,明确:构造器中不能通过"this(形参列表)"的方式调用自身构造器
  • 在类的一个构造器中,如果一个类中声明了n个构造器,则最多有n -1个构造器中使用了"this(形参列表)"
  • 在类的一个构造器中,"this(形参列表)"必须声明在类的构造器的首行!
  • 在类的一个构造器中,最多只能声明一个"this(形参列表)"
帮我改善此页面 (opens new window)
#this#关键字
上次更新: 2020/12/18, 12:50:58
面向对象特性-封装
package关键字

← 面向对象特性-封装 package关键字→

最近更新
01
zabbix学习笔记二
02-28
02
zabbix学习笔记一
02-10
03
Linux访问不了github
12-08
更多文章>
Theme by Vdoing | Copyright © 2020-2022 Saul.J.Wu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式