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.name=name
语句表示一个赋值语句,等号左边的 this.name 是指当前对象具有的变量 name,等号右边的 name 表示参数传递过来的数值。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 关键字来访问类中的属性,以区分类的属性和方法中的参数。
/** * 第一种定义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 对象。
/** * 第二种定义Dog类方法 **/ // 定义一个run()方法,run()方法需要借助jump()方法 public void run() { // 使用this引用调用run()方法的对象 this.jump(); System.out.println("正在执行run方法"); }从第一种 Dog 类定义来看,在 Dog 对象的 run( ) 方法内重新创建了一个新的 Dog 对象,并调用它的 jump( ) 方法,这意味着一个 Dog 对象的 run( ) 方法需要依赖于另一个 Dog 对象的 jump( ) 方法,这不符合逻辑。
public void run() { jump(); System.out.println("正在执行run方法"); }大部分时候,一个方法访问该类中定义的其他方法、成员变量时加不加 this 前缀的效果是完全一样的。
public class Student { String name; // 无参构造方法(没有参数的构造方法) public Student() { this("张三"); } // 有参构造方法 public Student(String name) { this.name = name; } // 输出name和age public void print() { System.out.println("姓名:" + name); } public static void main(String[] args) { Student stu = new Student(); stu.print(); } }输出结果为:
姓名:张三
注意:
本文链接:http://task.lmcjl.com/news/10454.html