首页 » 网站推广 » php省略this技巧_深入理解Java中this关键字的运用

php省略this技巧_深入理解Java中this关键字的运用

访客 2024-12-08 0

扫一扫用手机浏览

文章目录 [+]

public class Person {

//定义一个move()方法

php省略this技巧_深入理解Java中this关键字的运用

public void move(){

php省略this技巧_深入理解Java中this关键字的运用
(图片来自网络侵删)

System.out.println(\"大众正在实行move()方法\"大众);

}

//定义一个eat()方法,eat()方法须要借助move()方法

public void eat(){

Person p = new Person();

p.move();

System.out.println(\"大众正在实行eat()方法\公众);

}

public static void main(String[] args) {

//创建Person工具

Person p = new Person();

//调用Person的eat()方法

p.eat();

}

}

运行结果为:

正在实行move()方法

正在实行eat()方法

以上这种办法确实能够做到在eat()方法里调用move()方法,但从main()方法里的程序中可以看出,一共创建了两个工具:main()方法里创建一个工具;eat()方法里创建一个工具。
可是真的须要创建两个工具吗?答案是否定的!
由于当程序调用eat()方法时一定会供应一个Person工具,而不须要重新创建一个Person工具了。

因此须要在eat()方法中得到调用该方法的工具,通过this关键字就可以知足这个需求。

this可以代表任何工具,当this涌如今某个方法体中时,它所代表的工具是不愿定的,但它的类型是确定的,它所代表的类型只能是当前类:只有当这个方法被调用时,它所代表的工具才被确定下来:谁在调用这个方法,this就代表谁。

将上面的Person类中的eat()方法改为一下这种办法更得当:

//定义一个eat()方法,eat()方法须要借助move()方法

public void eat(){

//利用this引用调用eat()方法的工具

this.move();

System.out.println(\"大众正在实行eat()方法\公众);

}

上述程序中eat()方法须要依赖于move()方法,现实中这种依赖环境非常常见,例如写字方法须要拿笔的方法,这种依赖都是同一个工具两个方法之间的依赖。
因此,Java许可工具的的一个成员直接调用另一成员,可以省略this前缀。
也便是说,上面的程序可以改为如下形式:

public void eat(){

move();

System.out.println(\"大众正在实行eat()方法\"大众);

}

其余一种环境是:this关键字可用于布局器中作为默认引用,由于布局器是直策应用new关键字来调用,而不是利用工具来调用的,以是this在布局器中代表该布局器正在初始化的工具。
例如下面的程序:

public class Person {

//定义一个名为age的成员变量

public int age;

//布局器

public Person() {

//在布局器里定义一个age变量

int age = 0;

//利用this代表该布局器正在初始化的工具

//下面的代码将会把该布局器正在初始化的工具的age成员变量设为3

this.age = 3;

}

public static void main(String[] args) {

//利用new Person()创建的工具的age成员变量都将被设为3

//下面代码输出3

System.out.println(new Person().age);

}

}

与普通方法类似的是,大部分时候,在布局器中访问其它成员变量和方法时都可以省略this前缀,但如果布局器中有一个与成员变量同名的局部变量,又必须在布局器中访问这个被覆盖的成员变量,则必须利用this前缀。
如上面程序所示。

当this作为工具的默认引用利用时,程序可以像访问普通引用变量一样来访问这个this引用,乃至可以把this当成普通方法的返回值。
请看下面程序:

public class Person {

public int age;

public Person grow() {

age ++;

return this;

}

public static void main(String[] args) {

Person p = new Person();

//可以连续调用同一个方法

p.grow().grow().grow();

System.out.println(\公众p工具的age的值是:\"大众+p.age);

}

}

运行结果为:

p工具的age的值是:3

从上面的程序可以看出,如果在某个方法中把this作为返回值,则可以多次连续调用同一个方法,从而使得代码更加的简洁。
但这种办法随意马虎造成实际意义的模糊,例如上面的group()方法,用于表示工具的成长,即age变量的值加1,实际上不应该有返回值。

末了须要强调一点:静态成员不能直接访问非静态成员,即static润色的方法不能访问不适用static润色的普通方法。
对付static润色的方法而言,可以利用类直接调用该方法,如果在static润色的方法中利用this关键字,则这个关键字就无法指向得当的工具。
以是,static润色的方法中不能利用this引用。

标签:

相关文章

ecs切换php技巧_ECS跨云迁移

迁移方案l 信息网络&方案设计› 源端信息• 主机信息:阿里云ECS 1vCPUs 1GiB;操作系统:Anolis OS...

网站推广 2024-12-09 阅读0 评论0