public class ClassOne{
  private String name;
  ClassOne(String myName)
    {
      name=myName;
    }
  public String toString()
    {
      return("My name is "+name);
    }
}class ClassTwo{
  public static void main(String args[])
    {
      ClassOne oa=new ClassOne("Kobe Bryantd");
      System.out.println(oa);
    }
}在编译的时候,出现了如下错误:
class ClassOne is public,should be declared in a file named ClassOne.java
请问是不是定义成为public的类一定要放在另外一个同名的.java文件中呢?
还有一个问题,就是为什么在mian中可以写System.out.println(oa);呢?我觉得应该写oa对象的方法调用啊:System.out.println(oa.toString());
这种写法为什么可以省略.toString()呢?

解决方案 »

  1.   

    ◆要以public类的名称来命名当前java文件◆println()方法会调用print()方法 
    public void print(Object obj)
        {
            write(String.valueOf(obj));
        }可以看到,如果参数为Object,会首先调用String.valueOf()进行转换下面是String::valueOf()的实现方法:
    public static String valueOf(Object obj)
        {
            return obj != null ? obj.toString() : "null";
        }现在明白了吧
      

  2.   

    public 公共类必须与文件名相同,而且一个文件里面只能有一个公共类至于那个调用,toString是默认