重温java知识(七、this关键字之二、:方法)

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

你可能感兴趣的:(Java)