1、通过“this”调用本类普通方法的例子:
package com.mydemo;
// 创建一个“PersonDemo”类
public class PersonDemo {
public static void main(String args[]) {
Person per = new Person("张三", 18); // 声明并实例化对象
per.tell(); // 进行方法的调用
}
}
// 定义一个“人”类
class Person {
private String name; // 【成员属性】人的姓名
private int age; // 【成员属性】人的年龄
/**
* 定义双参构造方法,该方法中的参数名称与成员属性名称相同
* @param name
* @param age
*/
public Person(String name, int age) {
this.setName(name); // 调用本类setName()方法
setAge(age); // 不使用“this.方法()”也表示调用本类方法
}
/**
* 定义一个信息获取的操作方法,此方法可以输出属性内容
*/
public void tell() {
// 使用this明确标注本类属性
System.out.println("姓名:" + this.name + "、年龄:" + this.age);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
运行结果:姓名:张三、年龄:18
2、通过“this()”实现本类构造方法的互相调用的例子:【所有类的构造方法是在对象实例化的时候被默认调用,而且是在调用普通方法之前调用,所以使用this()调用构造方法的操作,一定要放在构造方法的首行】
package com.mydemo;
// 创建一个“PersonDemo”类
public class PersonDemo {
public static void main(String args[]) {
Person per = new Person("张三", 18); // 声明并实例化对象
per.tell(); // 进行方法的调用
}
}
// 定义一个“人”类
class Person {
private String name; // 【成员属性】人的姓名
private int age; // 【成员属性】人的年龄
// 【构造方法重载】无参构造
public Person() {
System.out.println("****** 一个新的Person类对象实例化了 ******");
}
// 【构造方法重载】单参构造
public Person(String name) {
this(); // 调用本类无参构造---该语句只能够放在构造方法的首行
this.name = name; // 设置name属性内容
}
// 【构造方法重载】双参构造
public Person(String name, int age) {
this(name); // 调用本类单参构造---该语句只能够放在构造方法的首行
this.age = age; // 设置age属性内容
}
/**
* 定义一个信息获取的操作方法,此方法可以输出属性内容
*/
public void tell() {
// 使用this明确标注本类属性
System.out.println("姓名:" + this.name + "、年龄:" + this.age);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
运行结果:
****** 一个新的Person类对象实例化了 ******
姓名:张三、年龄:18
3、利用构造方法相互调用实现代码重用的例子:【所有类的构造方法是在对象实例化的时候被默认调用,而且是在调用普通方法之前调用,所以使用this()调用构造方法的操作,一定要放在构造方法的首行】
package com.mydemo;
// 创建一个“EmpDemo”类
public class EmpDemo {
public static void main(String args[]) {
Emp emp = new Emp(9999, "张三", "研发部", 30000.00);
// Emp emp = new Emp(9999, "张三", "研发部");
// Emp emp = new Emp(9999, "张三");
// Emp emp = new Emp(9999);
// Emp emp = new Emp();
System.out.println(emp.getInfo());
}
}
// 定义一个“员工”类
class Emp {
private long empNo; // 员工编号
private String empName; // 员工姓名
private String deptName; // 部门名称
private double salary; // 基本工资
// 【构造方法重载】四参构造
public Emp(long empNo, String empName, String deptName, double salary) {
this.empNo = empNo; // 设置empNo属性内容
this.empName = empName; // 设置empName属性内容
this.deptName = deptName; // 设置deptName属性内容
this.salary = salary; // 设置salary属性内容
}
// 【构造方法重载】三参构造
public Emp(long empNo, String empName, String deptName) {
// 调用四参构造方法
this(empNo, empName, deptName, 2500.00);
}
// 【构造方法重载】双参构造
public Emp(long empNo, String empName) {
// 调用四参构造方法
this(empNo, empName, "未定", 2500.00);
}
// 【构造方法重载】单参构造
public Emp(long empNo) {
// 调用四参构造方法
this(empNo, "新来的", "未定", 2500.00);
}
// 【构造方法重载】无参构造
public Emp() {
// 调用四参构造方法
this(1000, "无姓名", "未定", 0.0);
}
public String getInfo() {
String info = "员工编号:" + this.empNo + "、员工姓名:" + this.empName + "、部门名称:" + this.deptName + "、基本工资:" + this.salary;
return info;
}
public long getEmpNo() {
return empNo;
}
public void setEmpNo(long empNo) {
this.empNo = empNo;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public String getdeptName() {
return deptName;
}
public void setdeptName(String deptName) {
this.deptName = deptName;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
运行结果:
员工编号:9999、员工姓名:张三、部门名称:研发部、基本工资:30000.0