随笔 - 322  文章 - 0  评论 - 4  阅读 - 77146

Java this关键字使用 详解+ 证明

复制代码
  1 package com.bytezero.thistest;
  2 /**
  3  * 
  4  * @Description 
  5  * @author  Bytezero·zhenglei!      Email:420498246@qq.com
  6  * @version
  7  * @date 2021年9月15日下午7:38:02
  8  * @
  9  *
 10  */
 11 /*
 12  * this关键字使用
 13  * 1.this可以用来修饰属性,方法,构造器
 14  * 
 15  * 2.this修饰属性和方法
 16  *   this理解为当前对象  或 当前正在创建的对象
 17  * 
 18  *   (1)在类的方法中,可以使用“this.属性”或“this.方法”的方式,调用当前对象属性
 19  * 或方法, 但是,通常情况下,我们都选择省略了“this.",特殊情况下,如果方法
 20  * 的形参和类的属性重名,我们必须显示式的使用“this.变量”的方式,表明此变量是
 21  * 属性,而非形参.
 22  * 
 23  *   (2)在类的构造器中,可以使用“this.属性”或“this.方法”的方式,调用当前正在创建的
 24  * 对象属性或方法, 但是,通常情况下,我们都选择省略了“this.",特殊情况下,如果构造器
 25  * 的形参和类的属性重名,我们必须显示式的使用“this.变量”的方式,表明此变量是
 26  * 属性,而非形参.
 27  * 
 28  *  3. this调用构造器
 29  *   (1) 我们在类的构造器中,可以显示的使用“this(形参列表)”方式,调用本类中的指定的其他
 30  * 构造器  
 31  *   (2)构造器不能通过“this(形参列表)”方式调用自己
 32  *   (3)如果一个类中有n个构造器,则最多有n - 1个构造器中使用了“this(形参列表)”
 33  *   (4)规定:this(形参列表)  必须声明当前构造器的首行
 34  *   (5)构造器内部,最多只能声明一个 this(形参列表),用来调用其他的构造器
 35  *   
 36  *   
 37  * 
 38  */
 39 public class PersonTest
 40 {
 41     public static void main(String[] args) 
 42     {
 43         Person p1 = new Person();
 44         
 45         p1.setAge(2);
 46         System.out.println(p1.getAge());
 47         
 48         p1.eat();
 49         
 50         Person p2 = new Person("Tom");
 51         System.out.println(p2.getName());
 52         
 53     }
 54 }
 55 
 56 
 57 class Person
 58 {
 59     private String name;
 60     private int age;
 61     
 62     
 63     //1
 64     public Person()
 65     {
 66         this.eat();
 67         String info = "已经被调用()";
 68         System.out.println(info);
 69     }
 70     
 71     //当前正在创建的对象
 72     public Person(String name)
 73     {
 74         this(); //1 调了 1 这个构造器
 75         this.name = name;
 76     }
 77     
 78     public Person(int age)
 79     {
 80         this();
 81         this.age = age;
 82     }
 83     
 84     
 85     public Person(int age,String name)
 86     {
 87         this(age);
 88         //this.age = age;
 89         this.name = name;
 90     }
 91 
 92     
 93     
 94     
 95     public void setName(String name)
 96     {
 97         this.name = name;
 98     }
 99     
100     public String getName()
101     {
102         return this.name;
103     }
104     
105     
106     
107     public void setAge(int age)
108     {
109         this.age = age;
110     }
111     
112     public int getAge()
113     {
114         return this.age;
115     }
116     
117     
118     public void eat()
119     {
120         System.out.println("人吃饭");
121         this.study();
122     }
123     public void study()
124     {
125         System.out.println("人学习");
126     }
127     
128     
129     
130     
131     
132     
133     
134     
135 }
复制代码

 

posted on   Bytezero!  阅读(50)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

点击右上角即可分享
微信分享提示