[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:实线实心箭头指向总体。
相关文章
相关标签/搜索