国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

Java語(yǔ)言基礎(chǔ):內(nèi)部類

發(fā)布時(shí)間:2011-3-27 00:51    發(fā)布者:1770309616
關(guān)鍵詞: Java語(yǔ)言 , 內(nèi)部類
1.  普通內(nèi)部類
•普通內(nèi)部類的一個(gè)最簡(jiǎn)單的例子:
view plaincopy to clipboardprint?
// 外部類   
class OutterClass {   
    // 內(nèi)部類   
    public class InnerClass {   
        private int i = 0;   
        public int getInt(){   
            return i;   
        }   
    }   
    public void proc(){   
        InnerClass inClass = new InnerClass();   
        System.out.println(inClass.getInt());   
    }   
}   
   
public class Main {      
    public static void main(String[] args) {   
        OutterClass outClass = new OutterClass();   
        outClass.proc();   
    }   
}  
// 外部類
class OutterClass {
    // 內(nèi)部類
    public class InnerClass {
        private int i = 0;
        public int getInt(){
            return i;
        }
    }
    public void proc(){
        InnerClass inClass = new InnerClass();
        System.out.println(inClass.getInt());
    }
}

public class Main {   
    public static void main(String[] args) {
        OutterClass outClass = new OutterClass();
        outClass.proc();
    }
}
•外部類可以訪問內(nèi)部類的私有成員,內(nèi)部類也可以訪問外部類的私有成員:
view plaincopy to clipboardprint?
// 外部類   
class OutterClass {   
    private int mOut = 10;   
    // 內(nèi)部類   
    public class InnerClass {   
        private int mIn = 0;   
        public void printOutPrivate(){   
            // 直接打印外部類的成員   
            System.out.println(mOut);   
        }   
    }   
    public void printInPrivate(){   
        InnerClass inClass = new InnerClass();   
        // 直接打印內(nèi)部類的私有成員   
        System.out.println(inClass.mIn);   
    }   
    public void printOutPrivate(){   
        InnerClass inClass = new InnerClass();   
        inClass.printOutPrivate();   
    }   
}   
   
public class Main {      
    public static void main(String[] args) {   
        OutterClass outClass = new OutterClass();   
        outClass.printInPrivate();   
        outClass.printOutPrivate();   
    }   
}  
// 外部類
class OutterClass {
    private int mOut = 10;
    // 內(nèi)部類
    public class InnerClass {
        private int mIn = 0;
        public void printOutPrivate(){
            // 直接打印外部類的成員
            System.out.println(mOut);
        }
    }
    public void printInPrivate(){
        InnerClass inClass = new InnerClass();
        // 直接打印內(nèi)部類的私有成員
        System.out.println(inClass.mIn);
    }
    public void printOutPrivate(){
        InnerClass inClass = new InnerClass();
        inClass.printOutPrivate();
    }
}

public class Main {   
    public static void main(String[] args) {
        OutterClass outClass = new OutterClass();
        outClass.printInPrivate();
        outClass.printOutPrivate();
    }
}
•如果外部類的成員變量與內(nèi)部類的成員變量名字相同,當(dāng)內(nèi)部類要訪問外部類的該成員時(shí),可以使用“OutClass.this.mem”來(lái)區(qū)分:
view plaincopy to clipboardprint?
// 外部類   
class OutterClass {   
    private int mMem = 10;   
    // 內(nèi)部類   
    public class InnerClass {   
        private int mMem = 0;   
        public void printOutPrivate(){   
            // 直接打印外部類的成員   
            System.out.println(OutterClass.this.mMem);   
        }   
    }   
}  
// 外部類
class OutterClass {
    private int mMem = 10;
    // 內(nèi)部類
    public class InnerClass {
        private int mMem = 0;
        public void printOutPrivate(){
            // 直接打印外部類的成員
            System.out.println(OutterClass.this.mMem);
        }
    }
}
•要?jiǎng)?chuàng)建普通內(nèi)部類,必須先創(chuàng)建相應(yīng)的外部類:
view plaincopy to clipboardprint?
// 外部類   
class OutterClass {   
    private int mMem = 10;   
    // 內(nèi)部類   
    public class InnerClass {   
        private int mMem = 0;   
        public void printOutPrivate(){   
            // 直接打印外部類的成員   
            System.out.println(OutterClass.this.mMem);   
        }   
    }   
}   
   
public class Main {      
    public static void main(String[] args) {   
        OutterClass outClass = new OutterClass();   
       OutterClass.InnerClass inClass = outClass.new InnerClass();   
        inClass.printOutPrivate();   
    }   
}  
// 外部類
class OutterClass {
    private int mMem = 10;
    // 內(nèi)部類
    public class InnerClass {
        private int mMem = 0;
        public void printOutPrivate(){
            // 直接打印外部類的成員
            System.out.println(OutterClass.this.mMem);
        }
    }
}

public class Main {   
    public static void main(String[] args) {
        OutterClass outClass = new OutterClass();
       OutterClass.InnerClass inClass = outClass.new InnerClass();
        inClass.printOutPrivate();
    }
}
也可以用下面的方式:
view plaincopy to clipboardprint?
// 外部類   
class OutterClass {   
    private int mMem = 10;   
    // 內(nèi)部類   
    public class InnerClass {   
        private int mMem = 0;   
        public void printOutPrivate(){   
            // 直接打印外部類的成員   
            System.out.println(OutterClass.this.mMem);   
        }   
    }   
    public InnerClass newInnerClass() {   
        return new InnerClass();   
    }   
}   
   
public class Main {      
    public static void main(String[] args) {   
        OutterClass outClass = new OutterClass();   
       OutterClass.InnerClass inClass = outClass.newInnerClass();   
        inClass.printOutPrivate();   
    }   
}  
// 外部類
class OutterClass {
    private int mMem = 10;
    // 內(nèi)部類
    public class InnerClass {
        private int mMem = 0;
        public void printOutPrivate(){
            // 直接打印外部類的成員
            System.out.println(OutterClass.this.mMem);
        }
    }
    public InnerClass newInnerClass() {
        return new InnerClass();
    }
}

public class Main {   
    public static void main(String[] args) {
        OutterClass outClass = new OutterClass();
       OutterClass.InnerClass inClass = outClass.newInnerClass();
        inClass.printOutPrivate();
    }
}
2.  靜態(tài)內(nèi)部類
普通內(nèi)部類前面加上static修飾符,就成為靜態(tài)內(nèi)部類,靜態(tài)內(nèi)部類類似于C++的嵌套類,與普通內(nèi)部類相比有如下區(qū)別:
•靜態(tài)內(nèi)部類沒有指向外部類的引用,外部類對(duì)于它來(lái)說更像一個(gè)名字空間。
•普通內(nèi)部類不能有靜態(tài)成員,靜態(tài)方法,或另一個(gè)靜態(tài)內(nèi)部類;而靜態(tài)內(nèi)部類可以有這一切。
•靜態(tài)內(nèi)部類可以直接創(chuàng)建,不必先創(chuàng)建外部類:
view plaincopy to clipboardprint?
// 外部類   
class OutterClass {   
    private int mMem = 0;   
    // 靜態(tài)內(nèi)部類   
    static public class InnerClass {   
        private int mMem = 0;   
        public void printOutPrivate(){   
            // 這是錯(cuò)誤的   
            // System.out.println(OutterClass.this.mMem);   
        }   
    }   
    public void printInPrivate() {   
        InnerClass inClass = new InnerClass();   
        // 可以直接訪問靜態(tài)內(nèi)部類的成員   
        System.out.println(inClass.mMem);   
    }   
}   
public class Main {      
    public static void main(String[] args) {   
        // 直接創(chuàng)建靜態(tài)內(nèi)部類   
        OutterClass.InnerClass inClass = new OutterClass.InnerClass();   
        inClass.printOutPrivate();   
    }   
}  
// 外部類
class OutterClass {
    private int mMem = 0;
    // 靜態(tài)內(nèi)部類
    static public class InnerClass {
        private int mMem = 0;
        public void printOutPrivate(){
            // 這是錯(cuò)誤的
            // System.out.println(OutterClass.this.mMem);
        }
    }
    public void printInPrivate() {
        InnerClass inClass = new InnerClass();
        // 可以直接訪問靜態(tài)內(nèi)部類的成員
        System.out.println(inClass.mMem);
    }
}
public class Main {   
    public static void main(String[] args) {
        // 直接創(chuàng)建靜態(tài)內(nèi)部類
        OutterClass.InnerClass inClass = new OutterClass.InnerClass();
        inClass.printOutPrivate();
    }
}
從上面描述可以看出,靜態(tài)內(nèi)部類與一般類沒有太大區(qū)別,只不過它是放在一個(gè)類的里面,這個(gè)類相當(dāng)于它的名字空間,可以防止命名沖突。
3.  局部?jī)?nèi)部類
Java可以把一個(gè)類定義在一個(gè)方法里面,甚至是一個(gè){}塊里面,它的作用域就在這個(gè)塊里面:

view plaincopy to clipboardprint?
// 外部類   
class OutterClass {   
    public void testLocalInner() {   
        if (true)   
        {   
            class LocalInner {   
                public void proc() {   
                    System.out.println("hello");   
                }   
            }   
            // 可以創(chuàng)建使用   
            LocalInner localInner = new LocalInner();   
            localInner.proc();   
        }   
        // 錯(cuò)誤:超出類定義的作用域   
        LocalInner localInner = new LocalInner();   
        localInner.proc();   
    }   
}  
// 外部類
class OutterClass {
    public void testLocalInner() {
        if (true)
        {
            class LocalInner {
                public void proc() {
                    System.out.println("hello");
                }
            }
            // 可以創(chuàng)建使用
            LocalInner localInner = new LocalInner();
            localInner.proc();
        }
        // 錯(cuò)誤:超出類定義的作用域
        LocalInner localInner = new LocalInner();
        localInner.proc();
    }
}
局部?jī)?nèi)部類的一般用途是實(shí)現(xiàn)某個(gè)接口,并作為這個(gè)接口傳出方法被使用:

view plaincopy to clipboardprint?
// 接口   
interface Talker {   
    public void Talk();   
}   
   
// 外部類   
class OutterClass {   
    public Talker getTalker() {   
        // 現(xiàn)實(shí)該接口的局部?jī)?nèi)部類   
        class SomeTalker implements Talker {   
            public void Talk() {   
                System.out.println("hello");   
            }   
        }   
        // 創(chuàng)建類實(shí)例并作為Talker返回   
        SomeTalker talker = new SomeTalker();   
        return talker;   
    }   
}   
   
public class Main {      
    public static void main(String[] args) {   
        OutterClass outClass = new OutterClass();   
        Talker talker = outClass.getTalker();   
        talker.Talk();   
    }   
}  
// 接口
interface Talker {
    public void Talk();
}

// 外部類
class OutterClass {
    public Talker getTalker() {
        // 現(xiàn)實(shí)該接口的局部?jī)?nèi)部類
        class SomeTalker implements Talker {
            public void Talk() {
                System.out.println("hello");
            }
        }
        // 創(chuàng)建類實(shí)例并作為Talker返回
        SomeTalker talker = new SomeTalker();
        return talker;
    }
}

public class Main {   
    public static void main(String[] args) {
        OutterClass outClass = new OutterClass();
        Talker talker = outClass.getTalker();
        talker.Talk();
    }
}
4.  匿名內(nèi)部類
匿名內(nèi)部類的語(yǔ)法如下:

view plaincopy to clipboardprint?
new InterfaceName(){......}; 或 new SuperclassName(){......};   
new InterfaceName(){......}; 或 new SuperclassName(){......};  

它被認(rèn)為是InterfaceName的實(shí)現(xiàn)者,或是SuperclassName的繼承類,匿名內(nèi)部類沒有構(gòu)建函數(shù),如果SuperclassName有帶參數(shù)的構(gòu)造函數(shù),必須在創(chuàng)建匿名內(nèi)部類時(shí)帶上這些參數(shù),下面是匿名內(nèi)部類最常見的使用場(chǎng)合:

view plaincopy to clipboardprint?
// 接口   
interface Talker {   
    public void Talk();   
}   
   
// 外部類   
class OutterClass {   
    public void Talk(Talker talker) {   
        talker.Talk();   
    }   
}   
   
public class Main {      
    public static void main(String[] args) {   
        OutterClass outClass = new OutterClass();   
        // 直接生成一個(gè)匿名內(nèi)部類   
        outClass.Talk(new Talker(){   
            public void Talk() {   
                System.out.println("hello");   
            }   
        });   
    }   
}
本文地址:http://www.qingdxww.cn/thread-60025-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • Cortex-M4外設(shè) —— TC&TCC結(jié)合事件系統(tǒng)&DMA優(yōu)化任務(wù)培訓(xùn)教程
  • 想要避免發(fā)生災(zāi)難,就用MPLAB SiC電源仿真器!
  • 利用模擬開發(fā)工具生態(tài)系統(tǒng)進(jìn)行安全電路設(shè)計(jì)
  • 更佳設(shè)計(jì)的解決方案——Microchip模擬開發(fā)生態(tài)系統(tǒng)
  • 貿(mào)澤電子(Mouser)專區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产永久免费视频 | 精品视频免费在线观看 | 毛片天堂 | 有没有www动漫在线观看高清 | 色婷婷综合和线在线 | 人妖大乳 | 麻豆毛片 | 四虎成人影院 | 国产成人久久精品 | 亚洲欧美日韩国产综合高清 | 国产高清网站 | 午夜影院色 | 最新69国产成人精品视频69 | 成人自拍网 | 香蕉高清免费永久在线视频 | 爱人体147在线视频 爱情综合症泰剧在线观看全集 | 久久er精品视频 | 最近韩国高清免费观看视频大全 | 亚洲香蕉影视在线播放 | 在线男人天堂 | 在线精品国内外视频 | 亚洲天堂影院在线观看 | 手机看日韩毛片福利盒子 | 97国产在线视频公开免费 | 日本-区二区三区免费精品 日本强日本不卡一 | 日韩成人在线观看 | 91亚洲精品在看在线观看高清 | 国产精品免费视频网站 | 国产国拍亚洲精品永久不卡 | 国产精品极品美女自在线观看免费 | 欧美午夜精品久久久久免费视 | 国产日韩精品一区在线不卡 | 男人扒开女人下狂躁视频 | 中文字幕一区二区三区视频在线 | 毛片大全高清免费 | 韩国精品一区二区 | avtt香蕉 | 一级做a爰视频免费观看2019 | 男女污污在线观看 | 一级黄色大毛片 | 国内在线亚洲精品第一线 |