Мне нужно закодировать школьный проект, чтобы сделать это, они дали нам некоторые интерфейсы, которые помогут нам разработать реализации классов.Интерфейс Java, реализация которого называется
INode
является один из них:
public interface INode {
void buildString(StringBuilder builder, int tabs);
}
Мы должны реализовать этот интерфейс несколько раз.
BlockNode
является один из них:
public class BlockNode implements INode {
@Override
public void buildString(StringBuilder builder, int tabs) {
}
}
Теперь моя проблема заключается в том, что в основной функции, которую они делают, что (тип синтаксического анализа является INode):
root = parser.parse();
builder = new StringBuilder();
builder.append("PARSE TREE:\n");
root.buildString(builder, 0);
Я не» t получение, какая реализация
buildString(StringBuilder builder, int tabs)
называется. Это может быть тот, который я написал выше (BlockNode)? или любой другой, который я реализовал? Я не понимаю, какой из них называется в первом ..
Это зависит от того, какая реализация 'INode' возвращается' parse() ', конечно. Вы не можете сказать, проверив этот код. – EJP
Не видя определения класса 'parser', чтобы увидеть, что' parse() 'возвращает, мы не можем вам сказать. Весь смысл использования интерфейсов заключается в том, что 'parse()' возвращает реализацию _ appro_, которая предоставляет необходимую функциональность, и вам действительно не нужно знать, какой из них. –
Итак, если я верну реализацию реализации BlockNode в parse(), реализация, которая будет вызываться сначала, это BlockNode? –