package com.jsu.study.monththree;
public class Test {
public static void main(String[] args){
Employee employee = new Employee("呆呆狗",23,5200);
System.out.println(employee);//输出 Employee{name='呆呆狗', age=23, income=5200.0}
//因为我在这里仅仅是调用了Employee中的 自己定义的有参构造器 它的作用是对对象属性进行初始化
//在这里我仅仅是调用它改变了employee对象的默认值,但因为Employee的属性都被访问权限控制符private所修饰
//故我不能通过System.out.println(employee.name +" " + employee.age + " " + employee.income);
//查看Employee类中的私有属性
//Employee中的 自己定义的有参构造器
// public Employee(String name, int age, double income) {
// this.name = name;
// this.age = age;
// this.income = income;
// }
Employee employeeone = new Employee("呆呆狗",23,5200);
System.out.println(employee);
System.out.println(employee.getName() + " " + employee.getAge() + " " + employee.getIncome());
//故此时我再调用Employee中的getName(),getAge(),getIncome()方法
//利用这几个被public访问权限修饰符所修饰的带有返回值的方法返回我想查看的值
Employee employeetwo = new Employee("我是一只笨笨熊",1000,3);
System.out.println(employeetwo);
System.out.println(employeetwo.getName() + " " + employeetwo.getAge() + " " + employeetwo.getIncome());
//那么此时就出现了问题
//Employee类中,我们所生成 Setter 为我们传入的参数进行了逻辑判断
//而此时直接跳过了get方法的判断,直接返回了我们所传入的参数,即使传入的参数不合理也依旧被输出
//此时我们将自定义的有参构造器与set系列方法结合,也就是在构造器里面调用set系列方法,在初始化对象的属性时就进行合理性判断
Employee employeethree = new Employee("我是一只笨笨熊",1000,3);
System.out.println(employeetwo);
System.out.println(employeetwo.getName() + " " + employeetwo.getAge() + " " + employeetwo.getIncome());
//输出为 Employee{name='笨笨熊', age=18, income=52013.14}
//因为所传参数全部不合理,所以该对象的属性均为set方法中设置的默认值
// 您输入的姓名长度不合理,请输入长度为2-6的姓名
// 您输入的年龄不合理,请输入范围为0-130的年龄
// 您输入的薪水范围不合理,请输入范围为3000-10000的薪水
}
}
package com.jsu.study.monththree;
public class Employee{
private String name = "笨笨熊";
private int age = 18;
private double income = 52013.14;
//修改前
// public Employee(String name, int age, double income) {
// this.name = name;
// this.age = age;
// this.income = income;
// }
//修改后
//
public Employee(String name, int age, double income) {
setName(name);
setAge(age);
setIncome(income);
}
public String getName() {
return name;
}
public void setName(String name) {
if(name.length() >= 2 && name.length() <= 6) {
this.name = name;
}else{
System.out.println("您输入的姓名长度不合理,请输入长度为2-6的姓名");
}
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age >= 0 && age <=130){
this.age = age;
}else{
System.out.println("您输入的年龄不合理,请输入范围为0-130的年龄");
}
}
public double getIncome() {
return income;
}
public void setIncome(double income) {
if (income >= 3000 && income <= 10000) {
this.income = income;
} else {
System.out.println("您输入的薪水范围不合理,请输入范围为3000-10000的薪水");
}
}
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", age=" + age +
", income=" + income +
'}';
}
//System.out.println() 方法内部会自动调用对象的 toString() 方法
//System.out.println() 方法是 PrintStream 类中的一个方法,它用于打印格式化的输出。
//当传入一个对象作为参数时,println() 方法会调用该对象的 toString() 方法来获取其字符串表示,并将该字符串输出到控制台。
//在这里
}