揭开this的神秘面纱-属性篇 | 带你学《Java面向对象编程》之七

简介: 本节通过几组实例介绍了如何灵活地使用this进行本类属性的调用以及this在类中的特殊含义。

上一篇:3分钟速懂匿名对象 | 带你学《Java面向对象编程》之六
【本节目标】
通过阅读本节内容,能够让你初步了解到作用域的概念,理解this的多种用途,学会使用this进行类内属性的访问。

this调用本类属性

this可以算是Java中比较复杂的关键字,因为this的使用形式上决定了它的灵活性,在程序里面,使用this可以实现以下三类结构的描述:

  • 当前类中的属性:this.属性;
  • 当前类中的方法(普通方法、构造方法):this()、this.方法名称();
  • 描述当前对象;

通过现在的分析可以发现,利用构造方法或者是setter方法都可以进行类中的属性的赋值,在进行赋值的时候,之前采用的是如下的定义形式:

class Person{
   private String name ;
   private int age ;
   public Person(String n ,int a){
    name = n ;
    age = a ;
  }
  public void tell(){
    System.out.println(“姓名:”+ name + “、年龄:”+ age );
  }
//setter、getter略
}  
public class JavaDemo {          //主类
    public static void main(String args[]) {
      Person per = new person(“王五” ,38) ;
      per.tell() ;
   }
}

image.png
图一 执行结果一

但是我们在构造方法定义的过程中会发现有问题:

public Person(String n ,int a){
    name = n ;
    age = a ;
}

这个问题出现在参数名称上,可以发现,此时构造方法中两个参数的目的是为了类中的name或age属性初始化,但是,现在却发现此时的代码n和a参数名称不好。

public Person(String name ,int age){
    name = name ;
    age = age ;
}

image.png
图二 执行结果二

如果说现在将构造方法中的参数名称修改为name、age,则发现无法进行属性的正确设置:
在Java程序之中“{}”是作为一个结构体的边界符,那么在程序里面当进行变量(参数、属性)使用的时候,都会以“{}”作为一个查找边界,所以按照就近取用的原则,此时的构造方法并没有能够访问类中的属性,所以此时为了明确的标记出类中的属性与参数的区别,往往会在属性前追加一个“this”,表示本类属性。

class Person{
   private String name ;
   private int age ;
   public Person(String name ,int age){
    this.name = name ;
    this.age = age ;
   }
  public void tell(){
    System.out.println(“姓名:”+ this.name + “、年龄:”+ this.age );
  }
//setter、getter略
}  
public class JavaDemo {          //主类
    public static void main(String args[]) {
      Person per = new person(“王五” ,38) ;
      per.tell() ;
    }
}

image.png
图三 执行结果三

在以后的程序开发过程中,只要是访问本类中属性,请一定要加上“this”实现访问。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:揭开this的神秘面纱-方法篇 | 带你学《Java面向对象编程》之八
更多Java面向对象编程文章查看此处

相关文章
|
21天前
|
安全 Java 数据安全/隐私保护
|
1月前
|
Java 数据库连接 API
Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数
93 3
|
1月前
|
Java
Java面向对象编程
Java面向对象编程
|
1月前
|
存储 Java
JAVA面向对象编程
JAVA面向对象编程
|
1月前
|
Java
Java中的面向对象编程特性(封装、继承、多态)
Java中的面向对象编程特性(封装、继承、多态)
|
1月前
|
Java API
java查询属性个数
【2月更文挑战第11天】
|
2月前
|
设计模式 Java 程序员
Java中面向对象编程的实现
Java中面向对象编程的实现
|
2月前
|
存储 Java
深入剖析 Java 类属性与类方法的应用
Java 类属性,也称为字段,是类中的变量。它们用于存储与类相关的数据。 创建类属性 在类定义中声明属性
62 0
|
2月前
|
存储 Java
深入解析 Java 面向对象编程与类属性应用
面向对象编程 (OOP) 是一种编程范式,它将程序组织成对象。对象包含数据和操作数据的方法。 OOP 的优势: 更快、更易于执行 提供清晰的结构 代码更易于维护、修改和调试 提高代码重用性 减少开发时间
65 0
《21天学通Java(第6版)》—— 1.4 属性和行为
这两者在VolcanoRobot中都有,这是今天将作为类实现的项目。该项目使用计算机模拟火山探测工具,它模仿的是NASA的“遥控机器人研究”计划中用来在火山裂缝中进行研究探测的Dante II机器人。
1805 0