Confusion between clone method, copy constructor and getter method when inheriting
<p>I have made a class Location which looks like this:</p>

<pre><code>package TruckingCompany;

public class Location 
{
    private double x;
    private double y;
    private static final double xMax=1000.0;
    private static final double xMin=-1000.0;
    private static final double yMax=1000.0;
    private static final double yMin=-1000.0;
    public Location()
    {
        setX(0.0);
        setY(0.0);
    }
    public Location(double x,double y)
    {
        setX(x);
        setY(y);
    }
    public Location(Location location)
    {
        setX(location.getX());
        setY(location.getY());
    }
    public void setX(double x)
    {
        if(x&gt;=xMin &amp;&amp; x&lt;=xMax)
        this.x=x;
    }
    public void setY(double y)
    {
        if(y&gt;=yMin &amp;&amp; y&lt;=yMax)
        this.y=y;
    }
    public void set(double x,double y)
    {
        setX(x);
        setY(y);
    }
    public double getX()
    {
        return x;
    }
    public double getY()
    {
        return y;
    }
    public double getDistanceFrom(Location from)
    {
        double dx,dy;
        dx=getX()-from.getX();
        dy=getY()-from.getY();
        return Math.sqrt(Math.pow(dx, 2.0)+Math.pow(dy, 2.0));
    }
    @Override
    public String toString()
    {
        return "(" + x + " , " + y + ")";
    }
}
</code></pre>

<p>So based on this class, I want to make a class vehicle, which inherits from Location.
But it also has to implement an interface (I called it Movable), because from Vehicle I want to to make other classes, and then the company (my project simulates a trucking company) could use an ArrayList of Vehicles. I'll need to call the methods with the tag <code>&lt;T implements Movable&gt;</code>, so that's the reason why I made the interface.</p>

<p>So this is the class Vehicle:</p>

<pre><code>package TruckingCompany;

public class Vehicle extends Location,implements Movable
{
public void setLocation(Location location)
{
    set(location.getX(),location.getY());
}
public Location getLocation()
{
    return new Location(getX(),getY());
}
}
</code></pre>

<p>And this is the interface Movable:</p>

<pre><code>package TruckingCompany;

import java.sql.Time;

public interface Movable 
{
public void setLocation(Location location);
public Location getLocation();
public void move(Time howLong);
public void setDirection(double degrees);
public Time getReachingTime(Location to);
}
</code></pre>

<p>So is correct to make getLocation a getter method? Shouldn't it be a clone?
I could also implement Cloneable, and make it be a clone method.
Another option could be to make it a copy constructor instead of a getter method.
Pragmatically talking, what options are correct?</p>
