<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 閱讀(434) 評論(0)  編輯  收藏 所屬分類: Jave SE 6

    主站蜘蛛池模板: 久久亚洲中文无码咪咪爱| 成人五级毛片免费播放| 免费国产污网站在线观看不要卡| 亚洲理论在线观看| 国产亚洲综合色就色| 亚洲国产精品一区二区第四页 | 亚洲国产精品尤物yw在线| 日韩国产免费一区二区三区| a级黄色毛片免费播放视频| 国产精品亚洲一区二区三区| 国产精品亚洲精品| 亚洲AV天天做在线观看| 亚洲中文字幕日产乱码高清app| 免费日韩在线视频| 在线成人a毛片免费播放| 国产成人yy免费视频| 亚在线观看免费视频入口| 中文字幕无码毛片免费看| j8又粗又长又硬又爽免费视频| 免费在线观看自拍性爱视频| 国产精品亚洲一区二区三区在线观看| 中日韩亚洲人成无码网站| 久久精品亚洲AV久久久无码| 久久久久亚洲AV片无码下载蜜桃| 亚洲乱码一区二区三区在线观看| 国产L精品国产亚洲区久久| 亚洲成a人无码av波多野按摩| 国产成人啪精品视频免费网| 好爽又高潮了毛片免费下载| 最近最好的中文字幕2019免费 | 亚洲第一成年网站大全亚洲| 亚洲福利在线观看| 亚洲资源在线观看| 亚洲精品视频在线观看免费| 亚洲国产综合在线| 亚洲一级免费视频| 亚洲sm另类一区二区三区| 美国毛片亚洲社区在线观看 | 在线观看亚洲免费视频| 性做久久久久免费观看| 国产福利免费在线观看|