网站的新闻栏与产品栏如何做北京seo排名方法
news/
2025/10/2 4:04:50/
文章来源:
网站的新闻栏与产品栏如何做,北京seo排名方法,弄宽带要多少钱,网站策划专员this 关键字是 Java 常用的关键字#xff0c;可用于任何实例方法内指向当前对象#xff0c;也可指向对其调用当前方法的对象#xff0c;或者在需要当前类型对象引用时使用。
this.属性名
大部分时候#xff0c;普通方法访问其他方法、成员变量时无须使用 this 前缀#…this 关键字是 Java 常用的关键字可用于任何实例方法内指向当前对象也可指向对其调用当前方法的对象或者在需要当前类型对象引用时使用。
this.属性名
大部分时候普通方法访问其他方法、成员变量时无须使用 this 前缀但如果方法里有个局部变量和成员变量同名但程序又需要在该方法里访问这个被覆盖的成员变量则必须使用 this 前缀。
假设有一个教师类 Teacher 的定义如下
public class Teacher {private String name; // 教师名称private double salary; // 工资private int age; // 年龄
}在上述代码中 name、salary 和 age 的作用域是 private因此在类外部无法对它们的值进行设置。为了解决这个问题可以为 Teacher 类添加一个构造方法然后在构造方法中传递参数进行修改。代码如下
// 创建构造方法为上面的3个属性赋初始值
public Teacher(String name,double salary,int age) {this.name name; // 设置教师名称this.salary salary; // 设置教师工资this.age age; // 设置教师年龄
}在 Teacher 类的构造方法中使用了 this 关键字对属性 name、salary 和 age 赋值this 表示当前对象。this.namename语句表示一个赋值语句等号左边的 this.name 是指当前对象具有的变量 name等号右边的 name 表示参数传递过来的数值。
创建一个 main() 方法对 Teacher 类进行测试代码如下
public static void main(String[] args) {Teacher teacher new Teacher(王刚,5000.0,45);System.out.println(教师信息如下);System.out.println(教师名称teacher.name\n教师工资teacher.salary\n教师年龄teacher.age);
}运行该程序输出的结果如下所示。
教师信息如下
教师名称王刚
教师工资5000.0
教师年龄45提示当一个类的属性成员变量名与访问该属性的方法参数名相同时则需要使用 this 关键字来访问类中的属性以区分类的属性和方法中的参数。
this.方法名
this 关键字最大的作用就是让类中一个方法访问该类里的另一个方法或实例变量。
定义一个 Dog 类这个 Dog 对象的 run( ) 方法需要调用它的 jump( ) 方法Dog 类的代码如下所示
/*** 第一种定义Dog类方法**/
public class Dog {// 定义一个jump()方法public void jump() {System.out.println(正在执行jump方法);}// 定义一个run()方法run()方法需要借助jump()方法public void run() {Dog d new Dog();d.jump();System.out.println(正在执行 run 方法);}
}使用这种方式来定义这个 Dog 类确实可以实现在 run( ) 方法中调用 jump( ) 方法。下面再提供一个程序来创建 Dog 对象并调用该对象的 run( ) 方法。
public class DogTest {public static void main(String[] args) {// 创建Dog对象Dog dog new Dog();// 调用Dog对象的run()方法dog.run();}
}在上面的程序中一共产生了两个 Dog 对象在 Dog 类的 run( ) 方法中程序创建了一个 Dog 对象并使用名为 d 的引用变量来指向该 Dog 对象。在 DogTest 的 main() 方法中程序再次创建了一个 Dog 对象并使用名为 dog 的引用变量来指向该 Dog 对象。
下面我们思考两个问题。
1在 run( ) 方法中调用 jump( ) 方法时是否一定需要一个 Dog 对象
答案是肯定的因为没有使用 static 修饰的成员变量和方法都必须使用对象来调用。
2是否一定需要重新创建一个 Dog 对象
不一定因为当程序调用 run( ) 方法时一定会提供一个 Dog 对象这样就可以直接使用这个已经存在的 Dog 对象而无须重新创建新的 Dog 对象了。因此需要在 run() 方法中获得调用该方法的对象通过 this 关键字就可以满足这个要求。
this 可以代表任何对象当 this 出现在某个方法体中时它所代表的对象是不确定的但它的类型是确定的它所代表的只能是当前类的实例。只有当这个方法被调用时它所代表的对象才被确定下来谁在调用这个方法this 就代表谁。
将前面的 Dog 类的 run( ) 方法改为如下形式会更加合适run( ) 方法代码修改如下其它代码不变。
/*** 第二种定义Dog类方法**/// 定义一个run()方法run()方法需要借助jump()方法
public void run() {// 使用this引用调用run()方法的对象this.jump();System.out.println(正在执行run方法);
}从第一种 Dog 类定义来看在 Dog 对象的 run( ) 方法内重新创建了一个新的 Dog 对象并调用它的 jump( ) 方法这意味着一个 Dog 对象的 run( ) 方法需要依赖于另一个 Dog 对象的 jump( ) 方法这不符合逻辑。
第二种 Dog 类定义是当一个 Dog 对象调用 run( ) 方法时run( ) 方法需要依赖它自己的 jump( ) 方法与第一种定义类的方法相比更符合实际情形。
在现实世界里对象的一个方法依赖于另一个方法的情形很常见例如吃饭方法依赖于拿筷子方法写程序方法依赖于敲键盘方法。这种依赖都是同一个对象两个方法之间的依赖。因此Java 允许对象的一个成员直接调用另一个成员可以省略 this 前缀。也就是说将上面的 run( ) 方法改为如下形式也完全正确。
public void run() {jump();System.out.println(正在执行run方法);
}大部分时候一个方法访问该类中定义的其他方法、成员变量时加不加 this 前缀的效果是完全一样的。
注意对于 static 修饰的方法而言可以使用类来直接调用该方法如果在 static 修饰的方法中使用 this 关键字则这个关键字就无法指向合适的对象。所以static 修饰的方法中不能使用 this 引用。并且 Java 语法规定静态成员不能直接访问非静态成员。
this( )访问构造方法
this( ) 用来访问本类的构造方法构造方法是类的一种特殊方法方法名称和类名相同没有返回值。
下面定义一个 Student 类使用 this( ) 调用构造方法给 name 赋值Student 类的代码如下所示
public class Student {String name;// 无参构造方法没有参数的构造方法public Student() {this(张三);}// 有参构造方法public Student(String name) {this.name name;}// 输出name和agepublic void print() {System.out.println(姓名 name);}public static void main(String[] args) {Student stu new Student();stu.print();}
}输出结果为
姓名张三注意 this( ) 不能在普通方法中使用只能写在构造方法中。在构造方法中使用时必须是第一条语句。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/924538.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!