I am learning about classes and constructors in Java. I messing around with the code in an example program and can't seem to figure out exactly what's going on.

This code won't compile which makes sense to me:

```
class Line {
Point start;
Point end;

Line(final Point start, final Point end) {

    this.start = new Point(start);
    this.end = new Point(end);
    start = new Point(0.4, 0.4);

}...

```

I'm trying to assign the original start Point object reference to another Point object by calling the constructor of the Point object. The final keyword is in conflict with this.

However when I remove the final keyword from the Point start parameter...

```
class Line {
Point start;
Point end;

Line(Point start, final Point end) {

    this.start = new Point(start);
    this.end = new Point(end);
    start = new Point(0.4, 0.4);

}

```

it doesn't seem to actually change the reference, the Point object that is passed to the Line constructor still seems to point to the original object and is unchanged by the code of the Line constructor. So what gives? Does this have something to do with the fact that the 'start' referred to is local in scope to the Line constructor?