国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

四種內(nèi)部類詳細解釋和代碼示例

2019-11-14 15:16:12
字體:
供稿:網(wǎng)友


//成員內(nèi)部類
成員變量 :

    成員內(nèi)部類 : (詳情:請看成員內(nèi)部類文件夾,有代碼示例)
        //成員內(nèi)部類
        //可以用訪問控制權(quán)限的修飾符修飾,如:PRivate 私有的。
        //public,protected,private,缺省(默認,default)
        //在成員內(nèi)部類的內(nèi)部可以隨意訪問外部類的成員方法和成員變量
        //不能在成員內(nèi)部類里面聲明靜態(tài)方法和靜態(tài)變量
        //先編譯一個外部類的類文件然后摘編譯一個內(nèi)部類的類文件
        //內(nèi)部類的類名:_01_OuterClass$InnerClass
            可以等同看做成員變量,可以隨意訪問外部類的任意變量和任意方法,并且,不能在成員內(nèi)部類中聲明靜態(tài)變量和靜態(tài)方法

  
/*
    變量:
        成員變量 -- 普通內(nèi)部類
        靜態(tài)變量 -- 靜態(tài)內(nèi)部類
        局部變量 -- 局部內(nèi)部類
        //形參變量
        實參變量 -- 匿名內(nèi)部類

    變量聲明:
        數(shù)據(jù)類型  變量名  賦值
        類
        String s1; String.java--->String.class-->String
        String.java

    關(guān)于成員內(nèi)部類
    
        1.成員內(nèi)部類可以等同看做成員變量
        
        2.成員內(nèi)部類中不能有靜態(tài)聲明.
        
        3.成員內(nèi)部類可以訪問外部類所有的數(shù)據(jù).
*/
public class _01_OuterClass{
    
    //靜態(tài)變量
    private static String s1 = "A";
    
    //成員變量
    private String s2 = "B";
    
    //靜態(tài)方法
    private static void m1(){
        System.out.println("static's m1 method execute!");
    }
    
    //成員方法
    private void m2(){
        System.out.println("m2 method execute!");
    }
    
    //成員內(nèi)部類
    //可以用訪問控制權(quán)限的修飾符修飾。
    //public,protected,private,缺省
    //在成員內(nèi)部類的內(nèi)部可以隨意訪問外部類的成員方法和成員變量
    //不能在成員內(nèi)部類里面聲明靜態(tài)方法和靜態(tài)變量
    //先編譯一個外部類的類文件然后摘編譯一個內(nèi)部類的類文件
    //內(nèi)部類的類名:_01_OuterClass$InnerClass

    //成員內(nèi)部類
    class InnerClass{
        
        //靜態(tài)變量
        //static int i = 9999;
        //靜態(tài)方法
        //public static void m3(){}
        
        //成員方法
        public void m4(){
            System.out.println(s1);
            m1();
            
            System.out.println(s2);
            m2();
        }
    }
    //相當(dāng)于: InnerClass ...
    
    //入口
    public static void main(String[] args){
        
        //創(chuàng)建外部類對象
        _01_OuterClass oc = new _01_OuterClass();
        //怎么訪問一個成員內(nèi)部類
        //外部類對象的引用名.new 內(nèi)部對象
        
        InnerClass inner = oc.new InnerClass();
        
        inner.m4();
    }
    
}



      
//靜態(tài)內(nèi)部類
靜態(tài)變量 :

    靜態(tài)內(nèi)部類 : (詳情:請看靜態(tài)內(nèi)部類文件夾,有代碼示例)
        //靜態(tài)內(nèi)部類
        //可以用訪問控制權(quán)限的修飾符修飾,如:private 私有的。
        //public,protected,private,缺省(默認,default)
        //內(nèi)部可以聲明靜態(tài)變量和成員變量,靜態(tài)方法和成員方法
        //可以訪問外部的靜態(tài)變量和靜態(tài)方法,不能直接訪問成員變量和成員方法(需要有對象引用)
        //成員內(nèi)部類和靜態(tài)內(nèi)部類命名沒區(qū)別
            可以等同看做靜態(tài)變量,可以訪問外部類的靜態(tài)變量和靜態(tài)方法,但是不能直接訪問外部類的成員變量和成員方法(要有對象引用,如同main(),也是靜態(tài)的,有引用,就什么都能調(diào)用),并且,能聲明任意變量和任意方法

  
/*
    關(guān)于靜態(tài)內(nèi)部類
        1.靜態(tài)內(nèi)部類可以等同看做靜態(tài)變量
        
        內(nèi)部類重要的作用:可以訪問外部類中私有的數(shù)據(jù)。
        
        2.靜態(tài)內(nèi)部類可以直接訪問外部類的靜態(tài)數(shù)據(jù),無法直接訪問成員。
*/
public class _02_OuterClass{
    
    //靜態(tài)變量
    private static String s1 = "A";
    
    //成員變量
    private String s2 = "B-------";
    
    //靜態(tài)方法
    private static void m1(){
        System.out.println("static's m1 method execute!");
    }
    
    //成員方法
    private void m2(){
        System.out.println("m2 method execute!");
    }
    
    //靜態(tài)內(nèi)部類
    //可以用訪問控制權(quán)限的修飾符修飾。
    //public,protected,private,缺省
    //內(nèi)部可以聲明靜態(tài)變量和成員變量,靜態(tài)方法和成員方法
    //可以訪問外部的靜態(tài)變量和靜態(tài)方法,不能訪問成員變量和成員方法
    //成員內(nèi)部類和靜態(tài)內(nèi)部類命名沒區(qū)別
    
    //靜態(tài)內(nèi)部類
    static class InnerClass{
        
        //靜態(tài)方法
        public static void m3(){
            System.out.println(s1);
            m1();
            
            //也有外部靜態(tài)類,性質(zhì)一樣
            //成員變量和成員方法:無法從靜態(tài)上下文中引用非靜態(tài) 變量 s2
            _02_OuterClass a = new _02_OuterClass();
            System.out.println(a.s2+"kkkkkkkkkkkkk");//調(diào)用成員屬性,有對象引用就行
            //m2();
        }
        
        //成員方法
        public void m4(){
            System.out.println(s1);
            m1();
            
            //System.out.println(s2);
            //m2();
        }
    }
    
    
    //入口
    public static void main(String[] args){
        
        //執(zhí)行m3
        _02_OuterClass.InnerClass.m3();
        
        //執(zhí)行m4
        InnerClass inner = new _02_OuterClass.InnerClass();
        inner.m4();
    }
    
}



//局部內(nèi)部類
局部變量(方法中寫的類) :

    局部內(nèi)部類 : (詳情:請看局部內(nèi)部類文件夾,有代碼示例)
            //局部內(nèi)部類不能用訪問控制權(quán)限修飾符修飾。
            //但是能訪問外部方法的局部變量,但是局部變量必須用final修飾 , java8以后,可以不寫final修飾
            局部內(nèi)部類中,不能聲明靜態(tài)變量和靜態(tài)方法,只能聲明成員變量和成員方法
            1 如果外部方法是靜態(tài)方法,那內(nèi)部類中就不能訪問外部類的成員變量和成員方法
            2 如果外部方法是成員方法,那內(nèi)部類中就能訪問外部類的成員變量和成員方法

 

  
/*
    局部內(nèi)部類等同于局部變量
    
    重點:局部內(nèi)部類在訪問外部類的局部變量的時候,局部變量必須使用final修飾。

    在成員方法中能聲明一個局部靜態(tài)內(nèi)部類嗎?不能

    在靜態(tài)方法中能聲明一個局部靜態(tài)內(nèi)部類嗎? 自己試一下 不能


*/
public class _03_OuterClass{
    
         int i1 = 222;
        static int i2 = 255;
    //方法
//---------------------------------------成員方法里面的內(nèi)部類測試-------------------------
    public  void m1(){//成員方法
        
        //局部變量
        final int i = 10;//java8以后,局部內(nèi)部類訪問方法的局部變量,可以不加final修飾
        
        //局部內(nèi)部類;
        //局部內(nèi)部類不能用訪問控制權(quán)限修飾符修飾。

        //局部內(nèi)部類
        class InnerClass{
            
            //局部內(nèi)部類不能有靜態(tài)聲明
            //public static void m1(){}
            
            //成員方法
            public void m2(){
                System.out.println(i); // 10  訪問局部變量
                System.out.println( i1 );//訪問外類的成員變量
                System.out.println( i2 );//訪問外類的靜態(tài)變量
            }
                
        }
        
        //調(diào)用m2
        InnerClass inner = new InnerClass();

        inner.m2();
        
    }
//---------------------------------------靜態(tài)方法里面的內(nèi)部類測試-------------------------
    public static void m11(){//靜態(tài)方法
            //局部變量
        final int i = 10;//java8以后,局部內(nèi)部類訪問方法的局部變量,可以不加final修飾
        
        //局部內(nèi)部類;
        //局部內(nèi)部類不能用訪問控制權(quán)限修飾符修飾。

        //局部內(nèi)部類
        class InnerClass{
            
            //局部內(nèi)部類不能有靜態(tài)聲明
            //public static void m1(){}
            
            //成員方法
            public void m22(){
                System.out.println(i); // 10  訪問局部變量
               // System.out.println( i1 );//訪問外類的成員變量
                System.out.println( i2 );//訪問外類的靜態(tài)變量
            }
                
        }
        
        //調(diào)用m2
        InnerClass inner = new InnerClass();

        inner.m22();
    }
    
    
    //入口
    public static void main(String[] args){
        _03_OuterClass oc = new _03_OuterClass();
        oc.m1();
        oc.m11();
        
    }
    
}




//匿名內(nèi)部類
局部變量(調(diào)用方法傳參) :

    匿名內(nèi)部類 : (詳情:請看匿名內(nèi)部類文件夾,有代碼示例)
        /*匿名內(nèi)部類:指在方法調(diào)用時,方法的效用需要傳入某個類對應(yīng)的對象實參
        但是也可以直接new一個某個類型的一個對象,這個對象沒有名字

        如果反方定義形參,一般是個接口,那么調(diào)用的時候,要用其實現(xiàn)類傳入
        但是我可以不實現(xiàn)這個實現(xiàn)類,而是直接new這個接口的對象,也也可以
        相當(dāng)于:省下了,書寫實現(xiàn)類和實例化實現(xiàn)類對象的代碼
        也可以這么說,直接實例化了一個類,只不過這個類和接口名相同
        */
    //優(yōu)點 : 少定義一個雷
    //缺點 : 只能用一次,無法重復(fù)使用

        匿名內(nèi)部類幾個原則 :
            // 1 沒有構(gòu)造方法(因為匿名內(nèi)部類是沒有類名的)
            // 2 不能定義任何變量(靜態(tài),成員),不能定義任何方法(靜態(tài),成員),不能定義任何類
            // 3 不能使抽象類(因為在創(chuàng)建匿名內(nèi)部類的時候,會立即創(chuàng)建匿名內(nèi)部類的對象。從而也可知匿名內(nèi)部類必須實現(xiàn)它的抽象父類或者接口里包含的所有抽象方法)
            // 4 匿名內(nèi)部類不能使public ,protected,private,static
            // 5 只能創(chuàng)建匿名內(nèi)部類的一個實例
            // 6 匿名類和內(nèi)部類中的中的this : 有時候,我們會用到一些內(nèi)部類和匿名類。當(dāng)在匿名類中用this時,這個this則指的是匿名類或內(nèi)部類本身。這時如果我們要使用外部類的方法和變量的話,則應(yīng)該加上外部類的類名。
            匿名內(nèi)部類能訪問外部的靜態(tài)變量和靜態(tài)方法,私有的也能,但是不能訪問成員變量和成員方法,除非在實現(xiàn)類中,也要用外部類的引用去調(diào)用訪問
            


/*
    匿名內(nèi)部類:指在方法調(diào)用時,方法的效用需要傳入某個類對應(yīng)的對象實參
    但是也可以直接new一個某個類型的一個對象,這個對象沒有名字

    如果反方定義形參,一般是個接口,那么調(diào)用的時候,要用其實現(xiàn)類傳入
    但是我可以不實現(xiàn)這個實現(xiàn)類,而是直接new這個接口的對象,也也可以
    相當(dāng)于:省下了,書寫實現(xiàn)類和實例化實現(xiàn)類對象的代碼
    也可以這么說,直接實例化了一個類,只不過這個類和接口名相同
*/
public class _04_OuterClass{
    
    //靜態(tài)方法
    public static void t(CustomerService cs){
        cs.logout();
    }
    
    //入口
    public static void main(String[] args){
        
        //調(diào)用t方法
        //t(new CustomerServiceImpl()); //匿名內(nèi)部類 2 對應(yīng)下面的類
        
        //使用匿名內(nèi)部類的方式執(zhí)行t方法
        //整個這個"new CustomerService(){}"就是個匿名內(nèi)部類
        t(new CustomerService(){//匿名內(nèi)部類 1
            public void logout(){
                System.out.println("exit!");
            }
        });
        
        //匿名內(nèi)部類的優(yōu)點:少定義一個類.
        //缺點:無法重復(fù)使用!
    }
    
}


//接口
interface CustomerService{
    
    //退出系統(tǒng)
    public void logout();
    
}

//編寫一個類實現(xiàn)CustomerService接口
/*
class CustomerServiceImpl implements CustomerService{ //匿名內(nèi)部類 2

    public void logout(){
        System.out.println("系統(tǒng)已經(jīng)安全退出!");
    }
}
*/


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 庄浪县| 祥云县| 东海县| 翁牛特旗| 广昌县| 普兰店市| 东宁县| 合作市| 芷江| 佛学| 萍乡市| 洪江市| 保山市| 祁连县| 镇原县| 高陵县| 昔阳县| 康马县| 红安县| 满洲里市| 金堂县| 肥西县| 刚察县| 阳曲县| 延津县| 芒康县| 通化县| 噶尔县| 海口市| 松潘县| 邻水| 三门峡市| 百色市| 青阳县| 涿鹿县| 宁城县| 深圳市| 黄骅市| 南和县| 柳河县| 津南区|