1. 程式人生 > >JAVA-內部類及匿名內部類解讀

JAVA-內部類及匿名內部類解讀

package test10;
//無論內部類是公開還是私有都不能被繼承,因為它不是屬性,也不是方法。而是一個內部事務的描述。

public class Demo {
    public static void main(String[] args) {
        Pm p=new Pm(){//匿名內部類必須實現一個介面或者繼承一個類,必須重寫介面和類中的抽象方法
            public void show() {

            }
            void fly(){

            }

        };
        System.out.println(p.a);//引用能呼叫什麼,要看引用型別裡面有什麼
p.show(); // p.fly();編譯錯誤 Foo.Aoo FA=new Foo().new Aoo();//例項化成員內部類 FA.show();//呼叫成員內部類的方法 Pm.Inner PI=new Pm.Inner();//例項化介面內部類 Foo ff=new Foo(); ff.cop(); } } interface Pm {//介面 final int a=9; void show(); class Inner {//介面內部類--預設是public static
} } class Foo {//外部類 private int a; void cop(){ int A=3; class Boo {//方法內部類--也可以直接訪問外部類的成員變數和方法 void kk(){} void shoe() { a=9;//可以寫成Foo.this.a=0; cop(); System.out.println(A);//方法內部類能訪問被final區域性變數, kk(); } } } class
Aoo {
//成員內部類--可以直接訪問外部類的成員變數和方法 void show() { a=0;//可以寫成Foo.this.a=0; cop();//可以寫成Foo.this.cop(); } } static class Coo { void sh() { // cop();//不能訪問外部類的非靜態變數 } } }