Java doc says -
The class Object does not itself implement the interface Cloneable, so calling the clone method on an object whose class is Object will result in throwing an exception at run time.
Which is why clone method in Object class is protected ? is that so ?
That means any class which doesn't implement cloneable will throw CloneNotSupported exception when its clone method is invoked.
I ran a test program
public class Test extends ABC implements Cloneable{
@Override
public Object clone() throws CloneNotSupportedException {
System.out.println("calling super.clone");
return super.clone();
}
public static void main(String[] args) {
Test t = new Test();
try{
t.clone();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
class ABC{
}
From Class Test's clone method super.clone is being invoked ?
Why doesn't it throw exception ?