<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Scott@JAVA

    Java, 一杯濃濃的咖啡伴你到深夜

    A Glossary of Name Reuse

    From <<Java Puzzlers>>, Chapter 8. Classier Puzzlers


    A Glossary of Name Reuse

    Most of the puzzles in this chapter were based on name reuse. This section summarizes the various forms of name reuse.

    Overriding

    An instance method overrides all accessible instance methods with the same signature in superclasses [JLS 8.4.8.1], enabling dynamic dispatch; in other words, the VM chooses which overriding to invoke based on an instance's run-time type [JLS 15.12.4.4]. Overriding is fundamental to object-oriented programming and is the only form of name reuse that is not generally discouraged:

    class Base {
    public void f() { }
    }
    class Derived extends Base {
    public void f() { } // overrrides Base.f()
    }
    

    Hiding

    A field, static method, or member type hides all accessible fields, static methods, or member types, respectively, with the same name (or, for methods, signature) in supertypes. Hiding a member prevents it from being inherited [JLS 8.3, 8.4.8.2, 8.5]:

    class Base {
    public static void f() { }
    }
    class Derived extends Base {
    public static void f() { } // hides Base.f()
    }
    

    Overloading

    Methods in a class overload one another if they have the same name and different signatures. The overloaded method designated by an invocation is selected at compile time [JLS 8.4.9, 15.12.2]:

    class CircuitBreaker {
    public void f(int i)    { } // int overloading
    public void f(String s) { } // String overloading
    }
    

    Shadowing

    A variable, method, or type shadows all variables, methods, or types, respectively, with the same name in a textually enclosing scope. If an entity is shadowed, you cannot refer to it by its simple name; depending on the entity, you cannot refer to it at all [JLS 6.3.1]:

    class WhoKnows {
    static String sentence = "I don't know.";
    public static void main(String[] args) {
    String sentence = "I know!";   // shadows static field
    System.out.println(sentence);  // prints local variable
    }
    }
    

    Although shadowing is generally discouraged, one common idiom does involve shadowing. Constructors often reuse a field name from their class as a parameter name to pass the value of the named field. This idiom is not without risk, but most Java programmers have decided that the stylistic benefits outweigh the risks:

    class Belt {
    private final int size;
    public Belt(int size) { // Parameter shadows Belt.size
    this.size = size;
    }
    }
    

    Obscuring

    A variable obscures a type with the same name if both are in scope: If the name is used where variables and types are permitted, it refers to the variable. Similarly, a variable or a type can obscure a package. Obscuring is the only kind of name reuse where the two names are in different namespaces: variables, packages, methods, or types. If a type or a package is obscured, you cannot refer to it by its simple name except in a context where the syntax allows only a name from its namespace. Adhering to the naming conventions largely eliminates obscuring [JLS 6.3.2, 6.5]:

    public class Obscure {
    static String System; // Obscures type java.lang.System
    public static void main(String[] args) {
    // Next line won't compile: System refers to static field
    System.out.println("hello, obscure world!");
    }
    }
    

    posted on 2007-07-25 15:26 Scott@JAVA 閱讀(435) 評論(0)  編輯  收藏 所屬分類: Jave SE 6

    主站蜘蛛池模板: 在线观看免费成人| yellow免费网站| 亚洲黄色免费网站| 久久青草亚洲AV无码麻豆| 国产免费一级高清淫曰本片| 免费一级毛片不卡在线播放| 污污免费在线观看| 亚洲片国产一区一级在线观看| 日韩精品无码永久免费网站| 亚洲乱码国产一区网址| 中文字幕av免费专区| 亚洲AV永久无码精品一百度影院| 久久精品中文字幕免费| 久久精品国产亚洲av麻豆色欲| 亚洲免费观看网站| 亚洲一区二区无码偷拍| 国产91久久久久久久免费| 一级看片免费视频| 图图资源网亚洲综合网站| 中文免费观看视频网站| 一区二区亚洲精品精华液| 免费国产高清视频| 中文字幕av免费专区| 亚洲伊人久久精品| 免费a级毛片视频| 亚洲日韩在线观看免费视频| 婷婷精品国产亚洲AV麻豆不片| 91精品国产免费久久久久久青草| 亚洲色精品三区二区一区| 国产91精品一区二区麻豆亚洲| 久久久久久久99精品免费| 亚洲av成人综合网| 精品国产日韩亚洲一区| 69精品免费视频| 国产精品亚洲专区一区| 国产成人亚洲精品青草天美| 成年在线观看免费人视频草莓| 皇色在线免费视频| 亚洲日本久久久午夜精品| 亚洲熟女少妇一区二区| 少妇高潮太爽了在线观看免费|