These are both components for a physics engine that I am creating (one part is actually posted, by the way.)

A actually represents a Point class and B represents a Vector class. Now in the world of math, a vector is a point that has magnitude and direction, so conceptually, a "Point isa Vector." Furthermore, representation of a Point and a Vector are the same, and therefore, structurally, a "Point isa Vector." Lastly, in terms of mathematical operations, the operators of a Point and Vector are the same, so the basic functionality would indicate that a "Point isa Vector." If this was all there was to it, it would be really easy.

What starts getting sticky is the higher mathematical operations that we do. For example, we cannot find the distance between two vectors, but we could find the distance between two points. We cannot do matrix multiplication with a Point. Etc.

So what I end up having is a Vector class that should publically inherit Point by convention, but it should not include all the functionality of the base class, Point. What would be a good method to do this?