Я создал класс Vector2D
, который расширяет Point2D.Double
.
A Vector2D
имеет два поля: величину и направление. Расширение Point2D.Double
позволяет вектору также сохранять начальную позицию.
Мне нравится возможность сделать это:
Vector2D myVector = new Vector2D(50, 50); // instantiated without direction or magnitude
Point2D.Double myPoint = new Point2D.Double(myVector.getLocation());
Однако я бы хотел запретить это:
Point2D.Double myPoint = myVector;
А это:
Point2D.Double myPoint.setLocation(myVector);
Поскольку обе эти операции обрабатывают myVector
, как если бы оно было , просто a Point2D.Double
.
Я знаю, что Java не допускает переопределения или перегрузки операторов, поэтому первый нежелательный случай кажется особенно сложным для устранения. Я также знаю, что могу переопределить .setLocation()
пустым телом метода (чтобы предотвратить его использование), но это не очень хорошее решение.
Есть ли способ запретить Vector2D
методы или операторы, которые существуют в Point2D.Double
?