【问题标题】:Is the 'toString' method of Java Wrapper classes overloaded or is it an abstract method that has different definitions in different classes?Java Wrapper 类的“toString”方法是重载还是抽象方法在不同的类中有不同的定义?
【发布时间】:2017-03-04 06:43:17
【问题描述】:

在下面的程序中,我尝试使用 Wrapper 类的静态“toString”方法将数字转换为字符串。

class NumberToStringConversion
{
  public NumberToStringConversion()
 {
  String I=Integer.toSring(i);
  String F=Float.toString(f);
  String D=Double.toString(d);
  String L=Long.toString(l);
 }
}

这里,Integer、Float、Double 和 Long 是包装各自原始数据类型的包装类。看起来toString 方法存在于所有上述包装类中。这是否意味着toString 方法已重载?还是abstract在不同类中有不同定义的方法?

【问题讨论】:

  • 没有。它们是不同类的不同方法,但恰好有相同的名称。

标签: java class wrapper overloading


【解决方案1】:

您调用的toString() 方法是静态方法。继承不适用于静态方法。每个包装类都有静态和非静态toString() 方法。静态的彼此无关。非静态的覆盖Object.toString()

例如Integer 有三个toString() 方法:

String toString();  // overrides Object.toString()
static String toString(int i);
static String toString(int i, int radix);

【讨论】:

  • 谢谢约翰。我知道静态方法是使用类名“Integer.toString”调用的,即使该类从未实例化并且没有创建对象也可以使用。那么,所有这些方法都具有相同的名称只是为了方便吗?
  • 是的,这是为了保持一致性。
猜你喜欢
  • 2017-10-01
  • 2015-12-04
  • 2018-12-15
  • 2014-06-20
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多