...
In this noncompliant code example, the clone() method in the class Base fails to call super.clone(). :
| Code Block | ||
|---|---|---|
| ||
class Base implements Cloneable {
public Object clone() throws CloneNotSupportedException {
return new Base();
}
protected void doLogic() {
System.out.println("Superclass doLogic");
}
}
class Derived extends Base {
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
protected void doLogic() {
System.out.println("Subclass doLogic");
}
public static void main(String[] args) {
Derived dev = new Derived();
try {
Base devClone = (Base)dev.clone(); // Has type Base instead of Derived
devClone.doLogic(); // Prints "Superclass doLogic" instead of "Subclass doLogic"
} catch (CloneNotSupportedException e) { /* ... */ }
}
}
|
...