java中的this关键字到底指什么
发布网友
发布时间:2022-05-14 15:59
我来回答
共5个回答
热心网友
时间:2023-10-23 15:01
如果有两个同类型的对象,分别叫作a和b,那么您也许不知道如何为这两个对象同时调用一个f()方法:
class Banana { void f(int i) { /* ... */ } }
Banana a = new Banana(), b = new Banana();
a.f(1);
b.f(2);
若只有一个名叫f()的方法,它怎样才能知道自己是为a还是为b调用的呢?
为了能用简便的、面向对象的语法来书写代码——亦即“将消息发给对象”,编译器为我们完成了一些幕后工作。其中的秘密就是第一个自变量传递给方法f(),而且那个自变量是准备操作的那个对象的句柄。所以前述的两个方法调用就变成了下面这样的形式:
Banana.f(a,1);
Banana.f(b,2);
这是内部的表达形式,我们并不能这样书写表达式,并试图让编译器接受它。但是,通过它可理解幕后到底发生了什么事情。
假定我们在一个方法的内部,并希望获得当前对象的句柄。由于那个句柄是由编译器“秘密”传递的,所以没有标识符可用。然而,针对这一目的有个专用的关键字:this。this关键字(注意只能在方法内部使用)可为已调用了其方法的那个对象生成相应的句柄。可象对待其他任何对象句柄一样对待这个句柄。但要注意,假若准备从自己某个类的另一个方法内部调用一个类方法,就不必使用this。只需简单地调用那个方法即可。当前的this句柄会自动应用于其他方法。所以我们能使用下面这样的代码:
class Apricot {
void pick() { /* ... */ }
void pit() { pick(); /* ... */ }
}
在pit()内部,我们可以说this.pick(),但事实上无此必要。编译器能帮我们自动完成。this关键字只能用于那些特殊的类——需明确使用当前对象的句柄。例如,假若您希望将句柄返回给当前对象,那么它经常在return语句中使用。
由于increment()通过this关键字返回当前对象的句柄,所以可以方便地对同一个对象执行多项操作。
1. 在构建器里调用构建器
若为一个类写了多个构建器,那么经常都需要在一个构建器里调用另一个构建器,以避免写重复的代码。可用this关键字做到这一点。
通常,当我们说this的时候,都是指“这个对象”或者“当前对象”。而且它本身会产生当前对象的一个句柄。在一个构建器中,若为其赋予一个自变量列表,那么this关键字会具有不同的含义:它会对与那个自变量列表相符的构建器进行明确的调用。这样一来,我们就可通过一条直接的途径来调用其他构建器。如下所示:
其中,构建器Flower(String s,int petals)向我们揭示出这样一个问题:尽管可用this调用一个构建器,但不可调用两个。除此以外,构建器调用必须是我们做的第一件事情,否则会收到编译程序的报错信息。
这个例子也向大家展示了this的另一项用途。由于自变量s的名字以及成员数据s的名字是相同的,所以会出现混淆。为解决这个问题,可用this.s来引用成员数据。经常都会在Java代码里看到这种形式的应用,本书的大量地方也采用了这种做法。
在print()中,我们发现编译器不让我们从除了一个构建器之外的其他任何方法内部调用一个构建器。
热心网友
时间:2023-10-23 15:01
this用于在类的内部访问当前类的实例,主方法中创建colorpoint的时候调用了超类的构造方法,因此会输出ColorPoint,x是私有成员,在其他类中不可访问,但在自己内部可以访问
热心网友
时间:2023-10-23 15:02
子类继承了父类,也就是说又是ColorPoint类,也是Point类.
instanceof一般用来检验是否可以强制转换的.
热心网友
时间:2023-10-23 15:03
看大括号,private类型的只能在一个类里边自己用的,this 指的是包含它的那个大括号的作用域
热心网友
时间:2023-10-23 15:03
this指的是当前类的实例,他存在于哪个类中就指哪个类的实例
ColorPoint 中的 this 就指一个 ColorPoint 实例
Point 中的 this 就指一个 Point 实例
java中this是什么意思
Java中的this关键字主要表示当前对象的引用。它指向当前实例对象,用于在方法内部引用当前对象的属性和方法。在面向对象编程中,this关键字非常重要,因为它帮助实现类的实例之间的相互操作。下面进行详细解释:首先,this关键字指代当前实例对象。在一个类中创建实例后,每个实例都有自己独特的属性和方法。在...
java中的this是什么意思?
Java中的this是一个关键词,表示当前对象的引用。当我们在类中定义属性或方法时,如果方法中使用到了同名的属性,则编译器会默认将其作为当前对象中的属性,而不是局部变量。这时就需要使用this关键字明确地指定是对象中的属性,而不是局部变量。除了明确指定当前对象中的属性外,this还可以作为一个参数传...
java的this是什么意思?
在 Java 中,this 表示当前对象的引用。在对象中使用 this 引用自身,可以访问该对象的属性和方法。可以将其看作当前对象的一个指针,指向正在执行代码的对象。在实例方法中使用 this 时,它可以省略不写,系统会自动添加。使用 this 关键字可以解决如下两个问题。首先,this 可以使得类中属性与方法更加...
java中this的作用
在Java中,this关键字表示当前对象的引用,它是一个引用类型的变量。this关键字只能在非静态方法中使用,因为静态方法没有this关键字。this关键字指的是当前对象,因此只有在创建对象之后才能使用this关键字。同时,使用this关键字需要遵守Java的变量作用域规则,避免产生歧义和错误。在Java中,this关键字具有...
Java中的this关键字怎么理解?
理解Java中的this关键字,主要围绕其三个核心应用:引用成员变量、调用构造方法和返回对象的值。以下是详细解释:应用一:引用成员变量。在Java中,当成员变量和方法或局部变量同名时,this关键字能明确指出使用的是成员变量,而非局部变量。例如,`this.name = name;`表示将局部变量的值赋给成员变量。应...
类名.this是什么意思?
在 Java 语言中,类名.this 这个关键字还有一个比较重要的应用场景,就是在内部类中使用。内部类指的是定义在类的内部的类。使用类名.this 关键字可以指定当前类的对象,这个对象在内部类中使用非常方便,可以方便地访问当前类的成员变量和成员方法。同时,使用类名.this 还可以避免变量名冲突和提高...
java中this和super关键字代表什么?以及它们的三种作用
super关键字表示超(父)类的意思。this变量代表对象本身 使用super访问父类被子类隐藏的变量或覆盖的方法 使用this表示当前调用方法的对象引用 使用super调用基类构造函数,super应为构造函数中第一条语句 使用this调用本类另一构造函数,this应为构造函数中第一条 ...
java中this关键字有哪些用处?
this关键字在Java中主要用作引用当前对象,相当于当下的"我"。在Python中,self与Java的this作用相似,皆指代当前对象。Java中的this使用更加灵活,有时甚至可以省略。不过,它的用途其实不算多大。我常利用this完成的两个技巧,虽然需要借助this,本质上只是些微不足道的小窍门。比如抽取Base类,通常需要...
本人java新手菜鸟,请问java this关键字到底指的是成员变量还是方法里...
有this表示的是成员变量,没有this修饰的就近原则,那个离他进就是哪个。比如成员变量跟参数都是同一个名(例 int age)。在方法里面,有this修饰的就是表示成员,没有的就是参数。都没有修饰,就表示是离他近的参数啦。。当然这个回答只是回答了你的问题、扩展一下内容吧=== (当虚拟机创建一个...
java中this的用法详情介绍
this指直译是“这个”,在java中指“当前的”不管在哪里,只要用到this,指的一定就是当前的这个对象最常见的用法是在写java bean中比如下面的代码 public class Student private String name private int age;使用this调用本类中的属性\x0d\x0a\x0d\x0a现在观察以下代码,看会有那些问题\x0d...