Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Inner class

 
joshua antony
Ranch Hand
Posts: 117
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator



Why do I get compilation error in the above code.
Some say that the method Method() in class Test is hided by Method() in
Outer class.
Can sombody put some light into this
 
wise owen
Ranch Hand
Posts: 2023
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
15.12.1 Compile-Time Step 1: Determine Class or Interface to Search

The first step in processing a method invocation at compile time is to figure out the name of the method to be invoked and which class or interface to check for definitions of methods of that name. There are several cases to consider, depending on the form that precedes the left parenthesis, as follows:

  • If the form is MethodName, then there are three subcases:
  • [list]If it is a simple name, that is, just an Identifier, then the name of the method is the Identifier. If the Identifier appears within the scope (�6.3) of a visible method declaration with that name, then there must be an enclosing type declaration of which that method is a member. Let T be the innermost such type declaration. The class or interface to search is T.
  • If it is a qualified name of the form TypeName . Identifier, then the name of the method is the Identifier and the class to search is the one named by the TypeName. If TypeName is the name of an interface rather than a class, then a compile-time error occurs, because this form can invoke only static methods and interfaces have no static methods.
  • In all other cases, the qualified name has the form FieldName . Identifier; then the name of the method is the Identifier and the class or interface to search is the declared type T of the field named by the FieldName, if T is a class or interface type, or the upper bound of T if T is a type variable.
  • [/LIST]
     
    Barry Gaunt
    Ranch Hand
    Posts: 7729
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    I have renamed class Outer to XYZ because I found the name Outer is misleading. Test is the outer (or containing) class of class Inner. You can call Method() in the outer class as follows. Run main in class Test to see it work.
    [ September 14, 2006: Message edited by: Barry Gaunt ]
     
    joshua antony
    Ranch Hand
    Posts: 117
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Thanks Wise and Barry.

    So can I conclude that if a method is present in an inner class it cannot have overloaded version in parent class unless the parent class has overridden version of the method.
     
    • Post Reply
    • Bookmark Topic Watch Topic
    • New Topic