问题描述
java的Object对象有个clone方法,这个方法的修饰符是protected,如果我设计一个Class去继承Object,要使用这个clone一定要实现一个Cloneable的接口,这是为什么,我原本以为继承的protected方法就能直接用了?
解决方案
Cloneable的接口是标记接口...不是你不能访问,是访问的时候如果没有标记它是Cloneable的会抛一个异常。
解决方案二:
首先,这个问题与修饰符无关!楼主可以去看看JDK API 1.6.0,里面有对Object类的clone方法的具体描述Object 类的 clone 方法执行特定的复制操作。首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException。注意,所有的数组都被视为实现接口 Cloneable。否则,此方法会创建此对象的类的一个新实例,并像通过分配那样,严格使用此对象相应字段的内容初始化该对象的所有字段;这些字段的内容没有被自我复制。所以,此方法执行的是该对象的“浅表复制”,而不“深层复制”操作。 Object 类本身不实现接口 Cloneable,所以在类为 Object 的对象上调用 clone 方法将会导致在运行时抛出异常。
解决方案三:
。。。。。。public 都可以被继承或访问;protected在同一包,他的子类都可以去继承或访问;default,在同一包中可以被继承或访问,子类如果和父类不在一个包,也不能继承;private,必须在一个类中才能被访问。
时间: 2024-10-24 16:51:40