最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java外部類與內(nèi)部類的關(guān)系詳解

 更新時間:2021年12月08日 14:34:54   作者:mayifan_blog  
本文詳細(xì)講解了java外部類與內(nèi)部類的關(guān)系,用代碼演示了外部類調(diào)用內(nèi)部類的方法。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

?private,public,protected,default的訪問權(quán)限區(qū)別

在學(xué)習(xí)外部類與內(nèi)部類之前我們首先要弄明白private,public,protected,default在訪問權(quán)限上有什么不同,這對我們之后的理解會有一定的幫助。

  • 1、private:訪問權(quán)限最低的訪問控制符,被它修飾的變量只能訪問本類的對象。
  • 2、public:訪問權(quán)限最高,不僅是本類,子類,本包,其他的包,都可以去訪問它修飾的對象。
  • 3、default:訪問權(quán)限限制在本類以及本包內(nèi)。
  • 4、protected:訪問的范圍是本類,本包內(nèi),子類,但別的包不可以訪問。

外部類訪問內(nèi)部類

在外部類的main方法中創(chuàng)建了外部類的對象,并通過它創(chuàng)建了內(nèi)部類的對象,并調(diào)用了內(nèi)部類的方法,這里我們觀察調(diào)用時,age變量的變化。

public class People {	
	         private String name;
	         private int age=20;
	         private int ID ;	     	     
	         public static void main(String[] args){
		    	 People p = new People();
		    	 People.Student s = p.new Student();
		    	 s.study();	    	 
	     }	    	
	    class Student {
		    	private String name;
		    	private int age=18;
		    	private int studentNumber;
	    		public void study(){
		    		System.out.println("輸出age"+age);
		    		System.out.println("內(nèi)部類變量"+this.age);
		    		System.out.println("外部類變量"+People.this.age);			    		
	    	}	    	    	
	    }		
}

輸出結(jié)果:

輸出age18、內(nèi)部類變量18、外部類變量20

經(jīng)測試,我們可以發(fā)現(xiàn)內(nèi)部類對象不能直接獲得,只能由外部類的對象獲取。并且我們通過輸出結(jié)果,可以發(fā)現(xiàn)當(dāng)外部類和內(nèi)部類有相同屬性時,在內(nèi)部類中會優(yōu)先輸出內(nèi)部類的屬性,只有通過外部類的對象來調(diào)用age屬性,才會在本例中輸出20。在內(nèi)部類中,使用this,可以獲取內(nèi)部類的屬性。

局部內(nèi)部類

這時候,我們轉(zhuǎn)變一下思路,索性把Student類的創(chuàng)建放在People類的方法里,再看看結(jié)果會怎么樣。

public class People {	
	       private String name;
	       private int age=20;
	       private int ID ;	          
	       public static void main(String[] args){
		       People p = new People();
		       class Student {
			       private String name;
			       private int age=18;
			       private int studentNumber;	    	
		  	       public void study(){
		  	       System.out.println("輸出age"+age);
		               System.out.println("內(nèi)部類變量"+this.age);
		  	       System.out.println("外部類變量"+p.age);			    		
	    	   }	 
	        }
	        new Student().study();
	    }
}

輸出結(jié)構(gòu)和之前是一樣的,這也不奇怪,我們只是把類在方法里定義了,我們可以聯(lián)想到局部變量的定義,只能在本方法中使用,那么,方法內(nèi)的類自然也只是屬于這個方法,訪問權(quán)限只限于方法內(nèi)。

靜態(tài)嵌套類

既然開始了我們就不停下探索的腳步,我們把內(nèi)部類變成靜態(tài)類,我們可以理解為,這個內(nèi)部類現(xiàn)在屬于外部類了,外部類可以通過類名來調(diào)用這個類并創(chuàng)建對象,毫無疑問,結(jié)果是輸出18。

public class People {
	     private String name;
	     private int age=20;
	     private int ID ;	     	     
	     public static void main(String[] args){
		     People p = new People();	    	 
		     new People.Student().study();	    	 
	     }	    	
	    static class Student {
		    private String name;
		    private int age=18;
		    private int studentNumber;
	            public void study(){
			    System.out.println("輸出age"+age);
			    System.out.println("內(nèi)部類變量"+this.age);  			    		
	    	}	    	    	
	    }
}

匿名內(nèi)部類

匿名內(nèi)部類的實現(xiàn)涉及到了抽象類的實現(xiàn),那么什么是抽象類呢?抽象類擁有一系列抽象的屬性或者方法,它本身不能new對象,只有在它被繼承并被重寫所有抽象方法之后才能得到實現(xiàn)。我們這次要通過創(chuàng)建一個匿名內(nèi)部類的對象來使得一個抽象的類得到實體化并執(zhí)行一系列方法。首先我們需要創(chuàng)建一個抽象類,然后再寫一個類創(chuàng)建匿名內(nèi)部類的對象實現(xiàn)抽象類的方法(此處我們沒有用到繼承)。

abstract class People {	
	     private String name;
	     private int age=20;
	     private int ID ;	     	     
	     public abstract void work();    
}
 public class Test{	   	   
	     public static void main(String[] args){	    	  
		     Test t = new Test();
		      t.test(new People(){
		      public void work(){
		      System.out.println("我在工作");
	        	}
	         });
	      }	        
	       public void test(People people){
		         people.work();
		}			
}	

這段代碼的關(guān)鍵部分在:

 t.test(new People(){
		      public void work(){
		      System.out.println("我在工作");
	        	}
	         });

似乎我們new了一個抽象類People的對象,但其實我們通過了匿名內(nèi)部類來實現(xiàn)People類的實例化,它實現(xiàn)了work()抽象方法,然后調(diào)用此方法,輸出“我在工作”。

以上所述是小編給大家介紹的java外部類與內(nèi)部類的關(guān)系詳解,希望對大家有所幫助。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java正則表達(dá)式循環(huán)匹配字符串方式

    Java正則表達(dá)式循環(huán)匹配字符串方式

    這篇文章主要介紹了Java正則表達(dá)式循環(huán)匹配字符串方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java中的三元運(yùn)算(三目運(yùn)算)以后用得到!

    Java中的三元運(yùn)算(三目運(yùn)算)以后用得到!

    Java提供了一個三元運(yùn)算符,可以同時操作3個表達(dá)式,下面這篇文章主要給大家介紹了關(guān)于Java中三元運(yùn)算(三目運(yùn)算)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • 使用SpringBoot發(fā)送郵件的方法詳解

    使用SpringBoot發(fā)送郵件的方法詳解

    這篇文章主要介紹了使用SpringBoot發(fā)送郵件的方法詳解,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-05-05
  • springboot通過spel結(jié)合aop實現(xiàn)動態(tài)傳參的案例

    springboot通過spel結(jié)合aop實現(xiàn)動態(tài)傳參的案例

    SpEl 是Spring框架中的一個利器,Spring通過SpEl能在運(yùn)行時構(gòu)建復(fù)雜表達(dá)式、存取對象屬性、對象方法調(diào)用等,今天通過本文給大家介紹springboot?spel結(jié)合aop實現(xiàn)動態(tài)傳參,需要的朋友可以參考下
    2022-07-07
  • Java中this,static,final,const用法詳解

    Java中this,static,final,const用法詳解

    這篇文章主要介紹了Java中this,static,final,const用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • 在Java中將double轉(zhuǎn)換為int的操作方法

    在Java中將double轉(zhuǎn)換為int的操作方法

    這篇文章主要介紹了在Java中將double轉(zhuǎn)換為int的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Spring Boot JPA Repository之existsBy查詢方法失效的解決

    Spring Boot JPA Repository之existsBy查詢方法失效的解決

    這篇文章主要介紹了Spring Boot JPA Repository之existsBy查詢方法失效的解決方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Struts2學(xué)習(xí)教程之Action類如何訪問WEB資源

    Struts2學(xué)習(xí)教程之Action類如何訪問WEB資源

    這篇文章主要給大家介紹了關(guān)于Struts2學(xué)習(xí)教程之Action類如何訪問WEB資源的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • SpringCloud feign微服務(wù)調(diào)用之間的異常處理方式

    SpringCloud feign微服務(wù)調(diào)用之間的異常處理方式

    這篇文章主要介紹了SpringCloud feign微服務(wù)調(diào)用之間的異常處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • SpringMvc響應(yīng)數(shù)據(jù)及結(jié)果視圖實現(xiàn)代碼

    SpringMvc響應(yīng)數(shù)據(jù)及結(jié)果視圖實現(xiàn)代碼

    這篇文章主要介紹了SpringMvc響應(yīng)數(shù)據(jù)及結(jié)果視圖實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08

最新評論

浑源县| 广安市| 麟游县| 定远县| 资兴市| 丹棱县| 鸡东县| 肥西县| 泗洪县| 屯昌县| 兴隆县| 杂多县| 登封市| 和静县| 霍林郭勒市| 瓮安县| 宁津县| 西乌珠穆沁旗| 鲁山县| 万山特区| 南木林县| 乌兰浩特市| 曲阜市| 福贡县| 蕲春县| 宜宾县| 太仆寺旗| 长垣县| 清水河县| 南投市| 嘉峪关市| 岳普湖县| 广宗县| 巴东县| 青阳县| 洞口县| 兴隆县| 兴文县| 天长市| 全椒县| 富锦市|