Members
From Indus Communities
2.2 Agent and Component Members The members of an Agent or Component are Those members declared in the Agent or Component Those members inherited from direct super types Implicitly public
2.2.1 Field (Constant) Declarations Every field declaration in the body of a Agent or Component is implicitly public, static and final. If the Agent or Component declares a field with a certain name, then the declaration of that field is said to hide any and all accessible declarations of fields with the same name in the Agent’s or Component’s super types. Every field in the body of an Agent or Component must have an initialization expression, which need not be a constant expression. A compile-time error will result in the following cases: Field declarations with the same name Reference to fields with the same name inherited from super types Where an initialization expression for an Agent or Component field contains a reference by a simple name to the same field or to another field whose declaration occurs textually later in the same Agent or Component or by reference by the simple name to the same field contained in the Agent’s or Component’s super type
2.2.2 Abstract Method Declarations Methods are always public and abstract. A compile time error occurs if Agent or Component declare methods that are static (as that conflicts with the fact that they are abstract as well) Agent or Component declare methods that are final If the same modifier appears more than once in the method declaration The methods declared are specified as strictfp, native or synchronized Two methods in an Agent or Component declaration have the same signature If an Agent or Component declares a method, then the declaration of that method is said to override any and all methods with the same signature in the super types of the Agent or Component. A compile time error occurs if If over ridden method do not share the same return type with the method overriding it If the over ridden method has a throws clause that conflicts with that of any methods that over ride it Two inherited methods with the same signature in an Agent or Component declaration are referred to when the methods do not have the same return types (conflicting throws clauses will not cause an error in this case) Methods are overridden on a signature-by-signature basis. If, for example, an Agent or Component declares two methods with the same name but different signatures (different number of parameters or return types), and an Agent or Component overrides one of them, the other method is still inherited. If two methods of an Agent or Component (whether both declared in the same Agent or Component, or both inherited by an Agent or Component, or one declared and one inherited) have the same name but different signatures, then the method name is said to be overloaded. This fact doesn’t cause any difficulty in compilation.
