Мне любопытно узнать, что является лучшей практикой/конвенцией SE для обработки возвращаемого типа методов, реализующих интерфейс. В частности, предположим, что мы реализуем простое дерево, с интерфейсом, например:Возвращаемый тип метода, который реализует интерфейс
public interface ITreeNode {
public ITreeNode getLeftChild();
public ITreeNode getRightChild();
public ITreeNode getParent();
}
И у нас есть класс, который реализует TreeNode что:
public class TreeNode implements ITreeNode {
private TreeNode LeftChild, RightChild, Parent;
@Override
public ITreeNode getLeftChild() {
return this.LeftChild;
}
@Override
public ITreeNode getRightChild() {
return this.RightChild;
}
@Override
public ITreeNode getParent() {
return this.Parent;
}
}
Мой вопрос .. должен тип возвращаемого значения соответствующими внедренными методами являются ITreeNode или TreeNode и почему.
Eclipse автоматически заполняет методы TreeNode возвращаемым типом ITreeNode. Однако изменение его в TreeNode не вызывает никаких ошибок или предупреждений даже с флагом @Override.