Java面向对象-----this关键字

本文详细解析this关键字的作用,包括访问当前对象成员变量,区分局部变量与成员变量,以及在构造器中调用其他构造函数的规则。重点讲解了如何正确使用this在Java代码中的实例和应用场景。

this关键字:

作用:出现在成员方法,构造器中代表当前对象的地址,用于访问对象的成员变量,成员方法

this出现在有参数构造器中的用法:

public class Car{
String name;
double price;
public Car(String name , double price){

this.name = name;
this.price =price;

}
}

this出现在成员方法中的用法:

public class Car{
String name;
double price;
public void gowith(String name ){

System.out.println(this.name + "正在和" + name);
}
}

this测试代码 

public class TestThis {
int a,b,c;
TestThis(){
System.out.println("正要new一个Hello对象");
}
TestThis(int a,int b){
//Hello(); // //这样是无法调用构造方法的!
this(); //调用无参的构造方法,并且必须位于第一行!
a = a;//这里都是指的局部变量而不是成员变量
this.a = a;//这样就区分了成员变量和局部变量. 这种情况占了this使用情况的大多数!
this.b = b;
}
TestThis(int a,int b,int c){
this(a,b);
this.c = c;
//调用无参的构造方法,并且必须位于第一行!
}
void sing(){}
void chifan(){
this.sing(); //sing();
System.out.println("你妈妈喊你回家吃饭!");
}
public static void main(String[] args){
TestThis hi = new TestThis(2,3);
hi.chifan();
}
}

this关键字在构造器中成员方法中可以做什么?

可以用于访问当前的成员变量

this关键字

this的作用:this表示的是当前对象的本身,代表当前对象的一个引用,普通方法中,使用this:区分类成员属性和方法的形参,调用当前对象的其他方法 位置:任意

构造方法中使用this:使用this 来调用其他构造方法

位置:必须是第一条语句(第一行)

this不能用于static方法中

总结: 

 – This代表当前对象自身的引用(必须new)

– This可以修饰属性,区别成员变量和局部变量 – This修饰方法

– This修饰构造方法(必须是第一条语句)

<think>我们参考引用[1]、[2]、[3]来回答关于Java面向对象中类与对象的知识。 引用[1]提供了Java面向对象的整体知识点目录,其中与类与对象直接相关的是: - 二、类的成员(成员变量、方法、构造器、代码块、内部类) - 四、类的成员3—构造器/构造方法 - 五、类的成员4—代码块 - 六、类的成员5—内部类 引用[2]和[3]则具体展示了类与对象的创建和使用,包括对象实例化、属性赋值、方法调用以及构造方法的使用。 根据这些引用,我们可以将类与对象的知识点梳理如下: 1. 类(Class)是对象的模板,它描述了一类对象的行为和状态。 2. 对象(Object)是类的实例,具有状态(属性)和行为(方法)。 具体包括: 一、类的定义 使用关键字`class`来定义类,类中可以包含: - 成员变量(属性):描述对象的状态 - 方法:描述对象的行为 - 构造器:用于创建对象并初始化 - 代码块:用于初始化类或对象 - 内部类:定义在类内部的类 二、对象的创建和使用 创建对象:类名 对象名 = new 类名(); // 调用构造方法 给属性赋值:对象名.属性名 = 值; (注意:通常属性设置为private,通过setter方法赋值) 调用方法:对象名.方法名(); 三、构造方法(构造器) 构造方法名与类名相同,没有返回类型(连void都没有)。 作用:初始化对象的状态(为成员变量赋初始值)。 如果没有显式定义构造方法,编译器会提供一个默认的无参构造方法。 构造方法可以重载(overload),即定义多个参数列表不同的构造方法。 在引用[3]的代码中,我们可以看到: class Person { // 成员变量 String name = "张三"; int age = 18; String sex = "男"; // 构造方法1:有三个参数 public Person(String name, int age, String sex){ this(age); // 调用另一个构造方法Person(int age) this.name = name; this.sex = sex; } // 构造方法2:有一个参数 public Person(int age){ this.age = age; } // 方法 public void display(){ // 局部变量与成员变量同名,使用this访问成员变量 String name = "李四"; int age = 11; String sex = "男"; System.out.println("name:" + this.name); // this.name指成员变量name System.out.println("age:" + this.age); System.out.println("sex:" + this.sex); } } 说明: - 使用`this`关键字可以引用当前对象的成员变量或成员方法,常用于区分成员变量和局部变量。 - 在构造方法中,可以使用`this(参数)`来调用本类的其他构造方法(必须放在第一行)。 四、成员变量与局部变量 成员变量:定义在类中,方法外。有默认初始值(如int为0,对象引用为null)。 局部变量:定义在方法内或代码块内。必须显式初始化,没有默认值。 五、代码块 根据位置和修饰符,分为: - 实例代码块:每次创建对象时执行,在构造方法之前执行。 - 静态代码块:使用static修饰,在类加载时执行,只执行一次。 六、内部类 在一个类内部定义另一个类,内部类可以访问外部类的成员,包括私有成员。 以上是类与对象的核心知识点。接下来,根据用户要求,我们生成相关问题。 </think>### Java面向对象:类与对象核心知识 #### 1. **类与对象基础** - **类(Class)**:抽象模板,定义对象的属性和行为 ```java public class Person { // 成员变量(属性) String name; int age; // 构造方法(创建对象时初始化) public Person(String name, int age) { this.name = name; // this指向当前对象 this.age = age; } // 成员方法(行为) public void introduce() { System.out.println("我是" + name + ", 今年" + age + "岁"); } } ``` - **对象(Object)**:类的具体实例 ```java // 创建对象:类名 对象名 = new 构造方法() Person p1 = new Person("张三", 25); p1.introduce(); // 调用方法:对象名.方法名() ``` #### 2. **对象操作三要素** [^2] 1. **创建对象**:`类名 对象名 = new 类名();` 2. **属性赋值**:`对象名.属性名 = 值;` 3. **方法调用**:`对象名.方法名();` #### 3. **构造方法关键点** - 与类同名,无返回值类型 - 支持重载(参数列表不同) - `this()`可调用本类其他构造方法: ```java public Person(String name) { this(name, 18); // 调用双参数构造方法 } ``` #### 4. **封装特性** - 使用`private`保护属性: ```java private String name; // 提供public访问方法 public String getName() { return this.name; } public void setName(String name) { this.name = name; } ``` #### 5. **内存机制** - **栈内存**:存储对象引用(变量名) - **堆内存**:存储对象实例(属性值) - 示例分析: ```java Person p = new Person(); ``` - `p`(引用)存在栈中 - `new Person()`(对象实例)存在堆中 #### 6. **综合示例** [^3] ```java Person p = new Person("李四", 30); p.display(); // 输出结果: // name:李四 (this.name访问成员变量) // age:30 (不受display()方法内局部变量影响) // sex:男 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Curran-java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值