An AST node representing a
class
declaration.
The shape of this node is:
IClassNode IMetaTagsNode <-- getMetaTagsNode() INamespaceDecorationNode <-- getNamespaceNode() IKeywordNode <-- getKeywordNode() IExpressionNode <-- getNameExpressionNode() IKeywordNode <-- getExtendsKeywordNode() IExpressionNode <-- getBaseClassExpressionNode() IKeywordNode <-- getImplementsKeywordNode() IContainerNode <-- getInterfacesNode() IScopedNode <-- getScopedNode()
For example,
[Foo] [Bar] public class B extends A implements I1, I2 { ... }
is represented as
IClassNode IMetaTagsNode IMetaTagNode "Foo" IMetaTagNode "Bar" INamespaceDecorationNode "public" IKeywordNode "class" IIdentifierNode "B" IKeywordNode "extends" IIdentifierNode "A" IKeywordNode "implements" IContainerNode IIdentifierNode "I1" IIdentifierNode "I2" IScopedNode ...
If there is no metadata, the corresponding child node is not present.
If there is no namespace, the corresponding child node is not present.
If there is no extends
clause, the two corresponding child nodes are not present.
If there is no implements
clause, the two corresponding child nodes are not present.
If the class implements only one interface, there is still an IContainerNode
containing the one node for the interface.