[Java學習]面向對象-package;內部類;UML圖表示六種關係

###package 軟件包java

  • 類名前加入命名空間(包),解決命名衝突問題。
  • 定義格式:公司域名倒敘.項目名.模塊名; package語句寫在文件第一行
  • 使用import語句導入package java.lang; 軟件包下的全部類系統自動導入。
  • 編譯 javac -d 生成路徑 java源文件路徑
  • 運行 java 完整類名

###內部類 ####基本this

  • 定義:類裏面的類。
  • 好處:內部類能夠訪問其外部類的私有數據。
  • 分爲 :靜態內部類,成員內部類,局部內部類,匿名內部類

####靜態內部類code

  • 調用靜態內部類的靜態方法: OuterClass.InterClass.methods1();
  • 調用靜態內部類的成員方法:
InnerClass inner=new OuterClass.InnerClass();
inner.methods2();

####匿名內部類對象

  • 定義:沒有名字的類。
  • 優勢:少定義一個類。
  • 缺點:沒法重複使用。

未採用匿名內部類代碼繼承

package com.test.jinhj;

public class SubClass{

	public static void testM(CustomerService cs) {
		cs.logout();
	}

	public static void main(String[] args) {
		testM(new CustomerService());
	}

}

interface CustomerService{   
        //退出系統
	void logout();
}



class CustomerServiceImpl implements CustomerServerce{

	public void logout() {

		System.out.println("退出。");

	}

}

採用匿名內部類代碼接口

package com.test.jinhj;



public class SubClass{

	public static void testM(CustomerService customerService) {

		customerService.logout();

	}

	

	public static void main(String[] args) {

		//整個"CustomerService(){}"稱爲匿名內部類

		testM(new CustomerService() {

			public void logout() {

				System.out.println("exit!");

			}

		});

	}

}



interface CustomerService{

	//退出系統

	void logout();

}

###UML圖、六種類和類之間的關係 類和類之間的關係:生命週期

  • 泛化關係:繼承。 UML:實線空心箭頭。
  • 實現關係: 類實現接口。 UML:虛線空心箭頭。
  • 關聯關係:在當前類中含有其餘類的引用。 下例中Me和Friend就是關聯關係
public class Me{
	String name;
	
	Friend f;
	
	Me(Friend f){
		this.f=f;
	}
}

public class Friend{
	String name;
	String addr;
	
	Friend(String addr){
		this.addr=addr;
	}
}

public class Test{
	public static void main(String[] args){
	
	Friend f=new Friend("北京");

	//當建立完Me的對象後,關聯關係已創建,Me對象m中已有Friend對象f的內存地址。
	Me m=new me(f);
	
	System.out.println(m.f.addr);
	
	}
}

UML:實線箭頭。內存

  • 依賴關係:當前類中的局部變量是另外一個類的引用,二者是依賴關係。 UML:虛線箭頭。
  • 聚合關係:聚合關係是一種關聯關係,是總體和部分的關係,二者的生命週期相互不影響。 UML:實線空心箭頭指向總體。
  • 合成關係:合成關係是一種關聯關係,是總體和部分的關係,總體的關係決定部分的生命週期。 UML:實線實心箭頭指向總體。
相關文章
相關標籤/搜索