Object类中有一个克隆方法protected Object clone();
定义了一个Employee类,在main函数中为什么不能这样调用:
Employee e = new Employee();
e.clone();
不是所有的类都是Object的子类吗?protected方法不是对其子类可见吗?

解决方案 »

  1.   

    可以这样调用啊,只是你没重写clone方法而已。
      

  2.   

    可以调用呵,只不过这样要catch CloneNotSupportedException这个异常,否则编译无法通过即使编译通过了,如果Employee没有implement Cloneable,执行时会抛出这个异常更详细的可见我的博文: http://blog.csdn.net/alexandertech/article/details/6612577
      

  3.   

    implement Cloneable也可以不重写啊,仅仅加上行就行了
      

  4.   

    protected方法是对其子类可见,但对非子类不可见,也就是说我在子类里可以直接调用父类的
    protect方法,但在外面却不可以
      

  5.   

    3楼你好,不可以调用啊!
    编译提示:the method clone() from the type Object is not visible.
      

  6.   

    当然可以调用 不过你的main必须写在Employee 类里面
      

  7.   


    外面包括在main函数中吗?
      

  8.   

    不重写也可以 要实现Cloneable 不过这样的话其他类不能调用
    只能将main方法写在Emloyment里面
    你重写可以将访问权限改为public 
      

  9.   


    为什么只能将main方法写在Employee中呢
      

  10.   

    访问权限 protected只能在子类中访问
    你main方法写在其他类还叫子类么
      

  11.   

    public class Test {
      public static void main(String[] args) {
         Employee e = new Employee();
         Employee copy = (Employee)e.clone();
      }
    }
    class Employee {
      ...
    }Test类不也是Object的子类吗?
      

  12.   

    protected是包内可见和子类可见Object继承过来的clone方法只对java.lang这个包可见和其子类可见如果你把main方法写入Employee类里,就可以看到clone了
      

  13.   

    我明白了,书上说:子类只能调用受保护的clone方法克隆它自己。