如何在java中使用构造函数定义最高值?
我想用构造函数Salary()初始化一个新对象-Salary。然而,有一个论据附加到它作为“工资”如何在java中使用构造函数定义最高值?,java,Java,我想用构造函数Salary()初始化一个新对象-Salary。然而,有一个论据附加到它作为“工资” class Salary{ public Salary(String name, long salary){ this.name = name; setSalary(salary); } public void setSalary(long salary){ this.salary = salary;
class Salary{
public Salary(String name, long salary){
this.name = name;
setSalary(salary);
}
public void setSalary(long salary){
this.salary = salary;
}
private long salary;
}
基于此clas创建新对象薪资时,此初始“薪资”金额(基于构造函数)是它所能拥有的最高薪资金额。显然,我可以使用其他方法,如increaseSalary()来增加工资。或该类中的DecreaseAlary()方法来操作此值。然而,“薪水”的最高值永远不能高于我创建它时传递给它的值。如何实现这个方法 这个怎么样?在构造函数中:
setSalary(Long.MAX_VALUE); // here we ignore the `salary` parameter
private long salary = Long.MAX_VALUE;
或者等效地,在属性声明中(但必须从构造函数中删除setSalary()
调用):
请注意,您可以稍后更改薪资,上面的任何选项都会保留默认值和
long
允许的最大值,但您可以稍后针对特定实例更改它,只需调用setSalary()
如何?在构造函数中:
setSalary(Long.MAX_VALUE); // here we ignore the `salary` parameter
private long salary = Long.MAX_VALUE;
或者等效地,在属性声明中(但必须从构造函数中删除setSalary()
调用):
请注意,您可以稍后更改薪资,上面的任何选项都会保留默认值和
long
允许的最大值,但您可以稍后针对特定实例更改它,只需调用setSalary()
如何?在构造函数中:
setSalary(Long.MAX_VALUE); // here we ignore the `salary` parameter
private long salary = Long.MAX_VALUE;
或者等效地,在属性声明中(但必须从构造函数中删除setSalary()
调用):
请注意,您可以稍后更改薪资,上面的任何选项都会保留默认值和
long
允许的最大值,但您可以稍后针对特定实例更改它,只需调用setSalary()
如何?在构造函数中:
setSalary(Long.MAX_VALUE); // here we ignore the `salary` parameter
private long salary = Long.MAX_VALUE;
或者等效地,在属性声明中(但必须从构造函数中删除setSalary()
调用):
请注意,您可以在以后更改薪资,上述任何选项都会保留默认值和
长薪资所允许的最大值,但您可以在以后针对特定实例进行更改,只需调用设置薪资()代码>默认值
例如:
private long salary=1_000_000L代码>
请注意下划线文字,以提高整数/长字符的可读性
但是通过更仔细地查看您的代码,我无法完全理解您的问题:
使用您当前的构造函数,您总是被迫传递一些工资,因此它永远无法设置。因此,不需要初始值。你想给你的私人长期工资代码>默认值
例如:
private long salary=1_000_000L代码>
请注意下划线文字,以提高整数/长字符的可读性
但是通过更仔细地查看您的代码,我无法完全理解您的问题:
使用您当前的构造函数,您总是被迫传递一些工资,因此它永远无法设置。因此,不需要初始值。你想给你的私人长期工资代码>默认值
例如:
private long salary=1_000_000L代码>
请注意下划线文字,以提高整数/长字符的可读性
但是通过更仔细地查看您的代码,我无法完全理解您的问题:
使用您当前的构造函数,您总是被迫传递一些工资,因此它永远无法设置。因此,不需要初始值。你想给你的私人长期工资代码>默认值
例如:
private long salary=1_000_000L代码>
请注意下划线文字,以提高整数/长字符的可读性
但是通过更仔细地查看您的代码,我无法完全理解您的问题:
使用您当前的构造函数,您总是被迫传递一些工资,因此它永远无法设置。因此不需要初始值。您可以将其存储在第二个变量中:
class Salary{
public Salary(String name, long salary){
this.name = name;
this.maxSalary = salary; // ADD THIS
setSalary(salary);
}
public void setSalary(long salary){
this.salary = salary;
}
private long salary;
private long maxSalary; // ADD THIS
}
然后,您可以更改工资
,最高工资
将始终是提供给构造函数的原始金额。您可以将其存储在第二个变量中:
class Salary{
public Salary(String name, long salary){
this.name = name;
this.maxSalary = salary; // ADD THIS
setSalary(salary);
}
public void setSalary(long salary){
this.salary = salary;
}
private long salary;
private long maxSalary; // ADD THIS
}
然后,您可以更改工资
,最高工资
将始终是提供给构造函数的原始金额。您可以将其存储在第二个变量中:
class Salary{
public Salary(String name, long salary){
this.name = name;
this.maxSalary = salary; // ADD THIS
setSalary(salary);
}
public void setSalary(long salary){
this.salary = salary;
}
private long salary;
private long maxSalary; // ADD THIS
}
然后,您可以更改工资
,最高工资
将始终是提供给构造函数的原始金额。您可以将其存储在第二个变量中:
class Salary{
public Salary(String name, long salary){
this.name = name;
this.maxSalary = salary; // ADD THIS
setSalary(salary);
}
public void setSalary(long salary){
this.salary = salary;
}
private long salary;
private long maxSalary; // ADD THIS
}
然后您可以更改salary
,并且maxSalary
始终是提供给构造函数的原始金额。您必须将初始值存储在另一个成员中(max
),并在每次调用setSalary
时对其进行比较
class Salary {
public Salary(String name, long salary){
this.name = name;
this.max = salary;
setSalary(salary);
}
public void setSalary(long salary){
if (salary < max) {
this.salary = salary;
} else {
this.salary = max;
}
}
private long salary;
private final long max;
}
班级工资{
公共薪资(字符串名称,长薪资){
this.name=名称;
这个.max=工资;
固定工资;
}
公共收入(长期工资){
如果(工资<最大值){
这个。薪水=薪水;
}否则{
这个。薪水=最高;
}
}
私人长期工资;
私人最终长最大值;
}
希望这有帮助。您必须将初始值存储在另一个成员(max)中