If a programmer wants to eliminate the parent at a later time, the programmer is effectively modifying the implementation of a class. Thus it is reasonable that the programmer will have to write new code or change existing code. I don't know what the current status of CommonObjects is. Both of these are vaguely defined terms. Data abstraction means that all state of an object is accessed and manipulated using method invocations.
Encapsulation hides the private information.
In other words, encapsulation ensures that a client can only access an object using its external interface. If you have encapsulation, you can force the client to only call those methods that are in the external interface. According to the readings static typing implies strong typing. Imagine a class C that has methods m and n. If there was a linguistic way of removing that method then it would be signalled at compile time.