• <menu id="eeoky"><tt id="eeoky"></tt></menu>
  • <nav id="eeoky"></nav>
  • 專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
    動力節點LOGO圖
    始于2009,口口相傳的Java黃埔軍校
    首頁 hot資訊 讓我們來加深非靜態內部類的知識點

    讓我們來加深非靜態內部類的知識點

    更新時間:2023-02-10 16:51:19 來源:動力節點 瀏覽138次

    在Java 內部類的學習中,你會發現關于靜態內部類和非靜態內部類方法和屬性調用的規則有好多,為了加深理解記憶,在這里總結一下,如有錯誤歡迎指正。

    內部類實質上可以理解為外部類的一個成員,作為一個類,它可以有訪問修飾符修飾,因為內部類的上一級程序單元是外部類,所以它具有4個作用域:同一個類,同一個包,父子類和任意位置,因此可以使用private、protected、public、default修飾符修飾。作為一個成員,它可以用static修飾,所以分為普通內部類和靜態內部類。

    一、非靜態內部類 :

    非靜態內部類因為是非靜態成員所以是依賴對象而存在的,所以要想創建非靜態內部類的對象,必須先要有外部類對象才行,但是如果已經有了外部類的對象,卻不代表一定有非靜態內部類對象的產生。所以可以想到:

    1、當創建非靜態內部類對象的時候就相當于外部類的不管是實例變量,還是類變量都可以直接使用了,然后根據內部類本身就屬于外部類本身,所以不管公有屬性還是私有屬性都可以使用。

    2、由于在非靜態內部類一般是沒有靜態成員的(因為有一個特殊的例子就是編譯器常量,也就是在編譯期就能確定值的常量,在上篇博文中有詳細介紹),所以上面說到的調用都是在非靜態內部類的普通方法里調用的。

    3、根據靜態成員不能引用非靜態成員的規則,外部類的靜態成員也不能訪問非靜態內部類。包括不能使用非靜態內部類定義變量、創建實例等。所以只能在外部類的非靜態方法里面創建的實例,在靜態方法里面創建實例就會報錯。

    public class Out {
    	public String str1="公有普通變量";
    	private String str2="私有普通變量";
    	public static String str3="公有靜態變量";
    	private static String str4="私有靜態變量";
    
    	public void test1() {
        	System.out.println("外部類的普通公有方法!");
        }
    	private void test2() {
    		System.out.println("外部類的普通私有方法");
    	}
        public static void test3() {
        	System.out.println("外部類的靜態公有方法!");
        }
        private static void test4() {
    		System.out.println("外部類的靜態私有方法");
    
    	}
    	public static void main(String[] args) {
    		// TODO 自動生成的方法存根
           new Out().getInner();
    	}
    	 class Inner{
    		public final static int a=3;    //編譯期常量,不會報錯
    		public void test() {
    			test1();   //外部類的普通公有方法!
    			test2();   //外部類的普通私有方法!
    			test3();   //外部類的靜態公有方法!
    			test4();   //外部類的靜態私有方法!
                            //下面這行代碼分別輸出str1、str2、str3、str4
    			System.out.println(str1+"\t"+str2+"\t"+str3+"\t"+str4);
    		}
    
    	}
    	public void getInner() {
    		Inner inner=new Inner();
    		inner.test();
    	}
    
            public static void getInner2() {
    		//下面這行代碼會報錯,因為不能在靜態成員里面引用非靜態內部類
    		//Inner inner=new Inner();
    
    	}
    
    
    }

    以上就是動力節點小編介紹的"讓我們來加深非靜態內部類的知識點",希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您務。

    提交申請后,顧問老師會電話與您溝通安排學習

    免費課程推薦 >>
    技術文檔推薦 >>
    返回頂部
    疯狂婬荡乱婬A片中文,特级西西人体444WWw高清大胆,国产性XXXX18免费观看视频,中文字幕乱伦,free性满足HD国产精品,牛人女厕偷拍1区2区