天天看點

day15_學習總結day15_學習總結

day15_學習總結

包的含義

為了更好的管理java檔案,對其java檔案進行區分,其實質就是檔案夾,用于分類java檔案

命名規則:包名全部小寫

根據功能/使用範圍進行劃分

一般采用的是公司域名反寫
	eg:com.qf.javaee.pj
	
注意:包名書寫在java檔案中第一行
           

帶包運作

帶包運作有兩種方式
方式一:
	在控制台中,如果需要通過導包運作java代碼,須要先将java代碼編譯生成對應的.class檔案,然後将包名對應的檔案夾建立完畢,将.class檔案複制到對應的包名下,在控制台中通過
				java 包名.類名	
	來運作
    eg:java com.pj.HelloWorld
方式二:
	通過
				javac -d. 源檔案.java
		來編譯,會自動生成包名的檔案夾以及.class檔案
	再通過
				java 包名.類名
	運作即可
           

修飾符

靜态修飾符——static
狀态修飾符——final
抽象修飾符——abstract
權限修飾符:public protected private 預設
權限修飾符通路權限:
			同一個包下同一個類中	同一個包下不同類或子類		不同包下的子類中	不同包下的無關類
public				Y					Y					Y				Y
protected			Y					Y					Y
預設					Y					Y					
private				Y	
           

内部類

成員内部類

成員内部類位于外部類的成員位置
class{
	class{//成員内部類
		
	}
}

成員内部類的的成員方法通路:
	外部類.内部類 對象 = new 外部類.new内部類();
	對象.内部類方法名();
	
成員内部類可以被private/static修飾
	被private修飾的成員内部類私有化,開發中使用較少
	被static修飾的成員内部類
		成員方法的通路:
			外部類.内部類 對象名 = new 外部類.内部類();
			對象名.成員方法名();
			或者
				new 外部類.内部類().成員方法名();
		當成員方法也被static修飾時:
			可以通過以下方式通路
				外部類.内部類.成員方法名();
		注意:非靜态成員内部類中不能有靜态屬性		

           

局部内部類

局部内部類定義在方法内部
public void show(){
	class {
	
	}
}
在方法中如果要通路局部内部類中的成員時,需要在方法中建立局部内部類的對象,通過對象通路成員
           

變量問題

在成員内部類中通路變量的問題:
	變量名相同時遵循就近原則
           
class Outer{
	int num = 10;
	class Inner{
		int num = 20 ;
		public void show(){
			int num = 30;
			System.out.println(num);//輸出結果為30
			System.out.println(this.num);//輸出結果為20,this代表本類的對象位址值引用
			System.out.println(Outer.this.num);//輸出結果為10,
		}
	}
}
           

匿名内部類

沒有名字的類
格式:
new 抽象類/接口{
	重寫的方法;
};

匿名内部類的實質:繼承具體類的子類對象/繼承了抽象類的子類對象/實作了接口的子實作類對象
           
當通過形式參數或者傳回值類型為具體類,抽象類,接口時,用匿名對象類傳遞時:
	可以通過匿名内部類實作
	eg:
		interface Person{
			public void show();
		}
		
		class PersonDemo{
			public void method(Person person){
				System.out.println("method...");
			}
		}
		public class Test{
			public static void main(String[] args){
				PersonDemo pd = new PersonDemo();
				pd.method(new Pernson(){
					@Override
					public void show(){
						
					}
				});
			}
		}
	輸出結果為:
    	method...
作為傳回值同理也是如此