最近在看單例模式的實(shí)現(xiàn),看到有一種利用JAVA靜態(tài)內(nèi)部類(lèi)的特性來(lái)實(shí)現(xiàn),對(duì)于內(nèi)部類(lèi)我還真是不了解,遂了解了一下,代碼貼上。

/**
 * 內(nèi)部類(lèi)分為:成員內(nèi)部類(lèi)、局部?jī)?nèi)部類(lèi)、匿名內(nèi)部類(lèi)和靜態(tài)內(nèi)部類(lèi)。 */public class Demo {    /*
     * 1.成員內(nèi)部類(lèi):成員內(nèi)部類(lèi)是最普通的內(nèi)部類(lèi),
     *  它的定義為位于另一個(gè)類(lèi)的內(nèi)部。     */
    class Inside1 {        public void say() {
            System.out.println("Inside1 say...");
        }
    }    /*
     * 2.局部?jī)?nèi)部類(lèi):局部?jī)?nèi)部類(lèi)是定義在一個(gè)方法或者一個(gè)作用域里面的類(lèi),
     * 它和成員內(nèi)部類(lèi)的區(qū)別在于局部?jī)?nèi)部類(lèi)的訪問(wèn)僅限于方法內(nèi)或者該作用域內(nèi)。
     * 局部?jī)?nèi)部類(lèi)就像局部變量一樣,是不能有public、protected、private以及static修飾符的。     */
    public Demo fun1() {        class Woman extends Demo{            int age = 0;
        }        return new Woman();
    }    
    /*
     * 3.匿名內(nèi)部類(lèi):匿名內(nèi)部類(lèi)在編譯的時(shí)候由系統(tǒng)自動(dòng)起名為Outter$1.class。
     * 一般來(lái)說(shuō),匿名內(nèi)部類(lèi)用于繼承其他類(lèi)或是實(shí)現(xiàn)接口,并不需要增加額外的方法,只是對(duì)繼承方法的實(shí)現(xiàn)或是重寫(xiě)     */
    public void fun2(){        new JFrame().addKeyListener(new KeyListener() {            public void keyTyped(KeyEvent e) {}            public void keyReleased(KeyEvent e) {}            public void keyPressed(KeyEvent e) {}
     &n
        
		

網(wǎng)友評(píng)論