Вот что я не могу понять.
В java.lang.Object параметр clone() определяется с помощью модификатора protected. По определению, к которому он может обращаться по имени внутри собственного определения класса, по имени внутри любого производного от него класса и по имени в определении любого класса в одном пакете.
Здесь класс Sample находится в другом пакете и, очевидно, он не может получить доступ к clone() из класса Object. Но поскольку Sample выводится неявно из Object, почему он не может получить к нему доступ? В определении не сказано, что он должен удовлетворять обоим условиям (внутри того же пакета И также быть подклассом).
public class Sample {
public Object foo() throws CloneNotSupportedException {
...
return someObject.clone();
}
}