java基礎---內部類

來源:互聯網
上載者:User

標籤:靜態   一點   class   def   this   實現   更改   nal   public   

  ===靜態內部類,和靜態成員變數一致不需要依賴外部類,不能夠使用外部類的非static成員變數和方法,因為不依賴於對象。 ===成員內部類:可以有四種存取權限---private,default,protected,public就像一個成員變數一樣內部類訪問外部類的成員變數和方法(出現和內部類的成員變數和方法重名的情況的時候)外部類.this.成員變數外部類.this.成員方法外部類訪問內部類的成員變數和方法的時候必須先建立成員內部類的對象,再通過指向這個對象的引用來進行訪問兩種方式:1.建立外部類後再建立內部類;2.使用外部類的方法來建立。        Outter outter = new Outter();        Outter.Inner inner = outter.new Inner();  //必須通過Outter對象來建立                 //第二種方式:        Outter.Inner inner1 = outter.getInnerInstance(); ===局部內部類,定義在方法內部或者一個範圍內部,存取權限就是方法內或者該範圍內。  注意,局部內部類就像是方法裡面的一個局部變數一樣,是不能有public、protected、private以及static修飾符的。    public People getWoman(){        class Woman extends People{   //局部內部類            int age =0;        }        return new Woman();    } ===匿名內部類,使用一次來簡化編程,必須實現一個介面或者父類,主要就是用來建立一個對象然後使用。http://blog.csdn.net/qq_25827845/article/details/52598319繼承介面的方式來實現。繼承父類的方式來實現。建立線程的方式也是使用匿名內部類,而且是使用了繼承介面的方式來建立。new InnerClass{}的方式來建立new Thread(new Runnable{}).start();   深入理解內部類:1.為什麼成員內部類能夠訪問外部類的成員變數和方法呢?因為編譯器在編譯的時候預設會編譯成兩個.class檔案,內部類會有一個指向外部類對象的引用。 2.局部內部類和匿名內部類在編譯的時候怎麼取名字呢?局部內部類和匿名內部類只能夠在方法內和範圍內進行使用,為什麼只能訪問的是final修飾的局部變數?首先匿名內部類使用的變數值是對方法局部變數值的拷貝,拷貝的這個變數放入到常量池裡面了,和方法棧中的變數相互獨立的。使用final進行修飾的話,這個變數就無法被更改,也就不會出現資料不一致的情況。不用final修飾的話編譯都通不過。    public void test(final int b) {        final int a = 10;        new Thread(){            public void run() {                System.out.println(a);                System.out.println(b);            };        }.start();    } 3.static靜態內部類有外部類對象的引用嗎?沒有,因為和外部類對象無關,所以不存在對象引用。   為什麼在Java中需要內部類?總結一下主要有以下四點:  1.每個內部類都能獨立的繼承一個介面的實現,所以無論外部類是否已經繼承了某個(介面的)實現,對於內部類都沒有影響。內部類使得多繼承的解決方案變得完整,豐富了java繼承的方式,除了繼承介面和類,還能夠使用匿名繼承的方式,更加靈活。  2.方便將存在一定邏輯關係的類組織在一起,又可以對外界隱藏。  3.方便編寫事件驅動程式  4.方便編寫線程代碼  個人覺得第一點是最重要的原因之一,內部類的存在使得Java的多繼承機制變得更加完善。  

java基礎---內部類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.