如何在下面的代码中正确使用 toString 方法?
how do i make the correct use of toString method in my following code?
我想在我的程序中按以下方式使用 tostring()
方法打印分配的值:
class employee
{
double b;
}
class manager extends employee
{
}
public class employeestockplan
{
static Object o;
public void agrantstock()
{
if(o instanceof manager)
{
((employee) o).b = 80000;
}
else if(o instanceof employee)
{
((employee) o).b = 50000;
}
}
public String toString()
{
return ((employee) o).b+" ";
}
public static void main(String[] args)
{
o = new employee();
employeestockplan t = new employeestockplan();
System.out.println(t);
}
}
但是输出是0.0
,我应该在哪里修改我的程序?我个人认为我在指定 o 是员工还是经理的对象时犯了错误,否则错放了 toString
方法,但我不确定。
你需要覆盖classemployeestockplan
中的方法toString
,这里你拼错了,不是tostring
而是toString
。是 Java 区分大小写。
回复更新:
你永远不会在你当前的代码中调用 agrantstock()
这就是你得到 0 的原因。试试这个:
employeestockplan.o = new employee();
employeestockplan t = new employeestockplan();
t.agrantstock();
System.out.println(t);
输出:
50000.0
注意: o
应该是 employee
类型而不是 Object
,它会大大简化你的代码,你应该实现employee
中的方法 agrantstock
并在 manager
中覆盖它,这样你就不需要再用 instanceof 测试类型了。
这是因为您从未调用 agrantstock() 方法将值赋给 b。
您可以通过将静态 属性 设为 Employee 而不是 Object 来简化该方法。这是您的代码的一个稍微修改过的版本,也进行了修改以遵循标准命名约定:
class Employee {
double b;
}
class Manager extends Employee {
}
public class EmployeeStockPlan {
static Employee employee;
public void grantStock() {
if (employee instanceof Manager) {
employee.b = 80000;
} else {
employee.b = 50000;
}
}
public String toString() {
return ((Employee) employee).b + " ";
}
public static void main(String[] args) {
employee = new Employee();
EmployeeStockPlan stockPlan = new EmployeeStockPlan();
stockPlan.grantStock();
System.out.println(stockPlan);
}
}
注意在main方法中添加stockPlan.grantStock()
我想在我的程序中按以下方式使用 tostring()
方法打印分配的值:
class employee
{
double b;
}
class manager extends employee
{
}
public class employeestockplan
{
static Object o;
public void agrantstock()
{
if(o instanceof manager)
{
((employee) o).b = 80000;
}
else if(o instanceof employee)
{
((employee) o).b = 50000;
}
}
public String toString()
{
return ((employee) o).b+" ";
}
public static void main(String[] args)
{
o = new employee();
employeestockplan t = new employeestockplan();
System.out.println(t);
}
}
但是输出是0.0
,我应该在哪里修改我的程序?我个人认为我在指定 o 是员工还是经理的对象时犯了错误,否则错放了 toString
方法,但我不确定。
你需要覆盖classemployeestockplan
中的方法toString
,这里你拼错了,不是tostring
而是toString
。是 Java 区分大小写。
回复更新:
你永远不会在你当前的代码中调用 agrantstock()
这就是你得到 0 的原因。试试这个:
employeestockplan.o = new employee();
employeestockplan t = new employeestockplan();
t.agrantstock();
System.out.println(t);
输出:
50000.0
注意: o
应该是 employee
类型而不是 Object
,它会大大简化你的代码,你应该实现employee
中的方法 agrantstock
并在 manager
中覆盖它,这样你就不需要再用 instanceof 测试类型了。
这是因为您从未调用 agrantstock() 方法将值赋给 b。
您可以通过将静态 属性 设为 Employee 而不是 Object 来简化该方法。这是您的代码的一个稍微修改过的版本,也进行了修改以遵循标准命名约定:
class Employee {
double b;
}
class Manager extends Employee {
}
public class EmployeeStockPlan {
static Employee employee;
public void grantStock() {
if (employee instanceof Manager) {
employee.b = 80000;
} else {
employee.b = 50000;
}
}
public String toString() {
return ((Employee) employee).b + " ";
}
public static void main(String[] args) {
employee = new Employee();
EmployeeStockPlan stockPlan = new EmployeeStockPlan();
stockPlan.grantStock();
System.out.println(stockPlan);
}
}
注意在main方法中添加stockPlan.grantStock()