Live2D
复制代码

18-Java类之间的关系

Java中类之间的关系

Java中类与类之间的关系主要有四种:泛化关系、实现关系、关联关系和聚合关系

其中泛化关系就是我们熟知的继承关系

实现关系就是实现类和接口之间的关系,一种特殊的泛化关系

1、关联关系

/*
 *     
 *     1.泛化关系: 类与类之间的继承、接口与接口之间的继承关系
 *                 (UML用空心实线三角形箭头指向父类)
 *             
 *     2.实现关系: 类实现接口的关系
 *                 (UML用空心虚线三角形箭头指向接口)
 *                 
 *     3.关联关系: 类与类之间的连接,一个类能知道另一个类的属性和方法,使用成员变量体现
 *                 (UML用实线箭头指向被访问类,也可双向访问)就像是少了继承之间的多态一样
 */
package v关联关系;

public class Me {
	
	//Filed
	String name;
	
	//在当前类中含有其他类的引用
	//在当前对象中含有其他对象的引用
	//朋友
	Friend f;//Me和Friend关联关系。。。这里的f既是一个成员变量也是一个Friend类型的引用,
			//f就是Friend给Me的一个联系方式,通过创建Me的一个对象用其引用访问f,再用保存Friend对象引用的f访问
			//Friend对象的属性和方法,就像现实生活中我给朋友的一个联系方式f,朋友通过f得知我的信息
			//前提是创建一个我跟一个朋友,即创建两个类的对象
	
	public Me(Friend f){
		this.f=f;
	}
	public Me(String name) {
		// TODO 自动生成的构造函数存根
		this.name=name;
	
	}
	

}

package v关联关系;

public class Friend {
	
	String name;
	String addr;
	String tel;
	Me me;
	
	public Friend(String addr){
		
		this.addr=addr;
	}
	public Friend(Me m) {
		this.me=m;
	}

}

package v关联关系;

public class Test {
	
	public static void main(String[] args){
		
		Friend f = new Friend("广西贺州");
		
		//建立关联关系
		Me m = new Me(f);
		
		System.out.println(m.f.addr);
		
		Me me = new Me("哈沙科i");
		
		Friend friend = new Friend(me);
		
		System.out.println(friend.me.name);
		
	}

}

2、聚合关系

/*
 *   Classroom是整体
 */
package v聚合关系;

import java.util.List;

public class Classroom {
	
	int classid;
	
	//Classroom和List集合属于关联关系,在同一层级上
	//Classroom与Student属于聚合关系,一个是整体,一个是部分
	//List<Student>表示学生的集合,有很多学生
	List<Student> stus;//每一个Student就是部分
	
	//聚合关系:整体不依赖部分,部分也不依赖整体
	//整体无法决定部分的生命周期
	
	public Classroom(List<Student> s) {
		// TODO 自动生成的构造函数存根
		this.stus=s;
	}
	public Classroom(int id) {
		// TODO 自动生成的构造函数存根
		this.classid=id;
	}

}
/**
class Person{
	
	//人和List是关联关系
	//人和四肢是合成关系,人是整体,四肢是部分
	//合成关系和聚合关系是相似的
	//区别的地方:整体和部分是紧密相连的,整体的生命周期决定部分的生命周期
	List<Hands> s;
}
*/
package v聚合关系;

public class Student {
	
	String name;
	int id;
	Classroom classroom ;
	
	public Student(Classroom classroom) {
		// TODO 自动生成的构造函数存根
		this.classroom=classroom;
	}
	
	public Student(String name) {
		// TODO 自动生成的构造函数存根
		this.name=name;
	}

}

package v聚合关系;

import java.util.List;

public class Test {
	
	public static void main(String[] args) {
		
		Classroom classroom = new Classroom(1602052);
		Student student = new Student(classroom);
		System.out.println(student.classroom.classid);
		
	//	Classroom classroom1 = new Classroom((List<Student>) new Student("hshfgjha"));
		Student student1 = new Student("hshfgjha");
		System.out.println(student1.name);
		//System.out.println(classroom1.student1.classid);
	}

}

posted @ 2021-07-22 22:18  Milen-jie  阅读(155)  评论(0编辑  收藏  举报