javathis调用方法
⑴ java中this的使用方法
指代自身
例如
class A{
public int x;
public void y() {...}
}
这里this.x就指代A.x
this.y()就指代调用自身方法等于A.y
⑵ java中this的用法
1. this指当前对象。
当在一个类中要明确指出使用对象变量或函数时加上this引用。如下面例子中:
public class Hello {
String s = "Hello";
public Hello(String s){
System.out.println("s = " + s);
System.out.println("1 -> this.s = " + this.s);
this.s = s;
System.out.println("2 -> this.s = " + this.s);
}
public static void main(String[] args) {
Hello x=new Hello("HelloWorld!");
}
}
运行结果:
s = HelloWorld!
1 -> this.s = Hello
2 -> this.s = HelloWorld!
在这个例子中,构造函数Hello中,参数s与类Hello的变量s同名,这时直接对s进行操作则是对参数s进行操作。对类Hello的成员变量s进行操作就应该用this进行引用。运行结果的第一行就是直接对构造函数中传递过来的参数s进行打印结果;
第二行是对成员变量s的打印;第三行是先对成员变量s赋传过来的参数s值后再打印,所以结果是HelloWorld!
2. this作为参数传递
当你要把自己作为参数传递给别的对象时如:
public class A {
public A() {
new B(this).print();
}
public void print() {
System.out.println("Hello from A!");
}
}
public class B {
A a;
public B(A a) {
this.a = a;
}
public void print() {
a.print();
System.out.println("Hello from B!");
}
}
运行结果:
Hello from A!
Hello from B!
在这个例子中,对象A的构造函数中,new
B(this)把对象A作为参数传递给了对象B的构造函数。
⑶ java里的this 调用其他方法。
原因很简单,必须确保对象已经正确地被构造,如果不强制
this()
在第一句,就有可能发生这样的事情:
publicclassTestThis{
publicTestThis(inti){
}
publicTestThis(){
test();//这句话是不应该的,因为这个对象还没有正确被初始化你就调用了
this(1);
}
publicinttest(){
return1;
}
}
其实如果在对象没有正确初始化之前都是不能够调用本对象的方法或属性
publicclassTestThis{
intj;
publicTestThis(inti){
}
publicTestThis(){
this(j);//这是错误的,对象还没有正确初始化
}
publicinttest(){
return1;
}
}
publicclassTestThis{
intj;
publicTestThis(inti){
}
publicTestThis(){
this(test());//这是错误的,对象还没有正确初始化
}
publicinttest(){
return1;
}
}
其实这涉及到一个问题,如果this()可以放在构造函数的任意一句中,那么编译器就很难辨别你到底有没有调用正在初始化的对象中的方法或属性
但是在网上看到C#的构造函数中是可以这样做的,所以这个实现起来应该也不是很困难,不过java是这样规定的,我个人也相信这个绝对不是什么技术上的难题,不过是java虚拟机的标准罢了,没有什么具体理由可以讲,但是必须记住,在构造函数中调用this()或者super()之前都不应该使用该类或者是父类的任何属性和方法
⑷ java中一般方法里的this是代表调用本方法的对象,但是构造方法里的this代表的是什么呢。
this代表你正在构造的对象。
publicclassTest{
publicTest(){
System.out.println(this.toString());
}
publicstaticvoidmain(String[]args){
Testobj=newTest();
System.out.println(obj.toString());
}
}
输出的两个字符串相同(后面的数字是对象地址),说明this和obj是同一个对象。
这里this就是正在构建的CommunicationDemo的对象,作为参数传给Thread的构造函数。
内幕是:java对象的建立其实是在构造函数开始执行之前,就是说构造函数执行的时候,被构造的对象其实已经存在了,所以构造函数中可以用this引用当前被构造的对象进行处理(比如 this.name=“Jack”)。
⑸ 通过java中的类,对象和this分别调用方法有什么不同
简单点说,this是对当前对象的引用
用对象你可以创建其他类的对象
可以详细看一下this的用法
⑹ java关于this调用本类的方法
s是对Student对象实例的引用,运行代码s.fun();因为Student类中没有fun()这个方法。于是,程序去他的父类寻找。找到后,首先输出“什么玩意”,然后运行this.print();注意java中的关键字this在编译的时候就确定了,它就代表定义时候的对象。(这点和javascript有很大不同)。因此,此时的this代表Person,接着运行Person中的print()方法,输出结果就是“这是父类的方法”。但是,为什么去掉private关键字结果又不一样了呢?因为被private修饰的方法和属性是不会被子类继承的,如果是默认的权限,子类也可以继承到。于是,在父类运行this.print()时(即没有关键字private修饰),它会去子类查找该方法是否被重写,如果是,则调用子类方法;否则,执行父类的方法。
⑺ java关于this的调用
指的是Course类中的getCourse()方法
this指的是本类中的变量或方法。
⑻ java中this可以调用方法吗不是不是构造函数。
this是当前对象的引用,那么当前对象可以调用的方法用this也都可以调用的
⑼ java中,调用这个实例方法时用this.方法名,引用名.方法名都是合理的吗
this是当前对象,引用不一定是当前对象
⑽ 在java中怎样用this调用构造方法
在这个构造方法中,用this(参数列表)来调用对应参数列表的构造方法,不过要注意:这个要写在第一行,并且只能有一个this.