Lets start with 3. That wouldnt work. public getMyProperty() has no return typ.
And number 1 and 2 are actually same things. 2 is what number 1 becomes after compilation.
So 1 and 2 are same things. with two you can have some validation or caching in your model.
other than that they become same.