引用传递实际应用
简单Java类和数据表的关系:
- 类名称 = 表名称
- 属性名称 = 表字段
- 属性类型 = 表字段类型
- 一个实例化对象 = 一行记录
- 多个实例化对象(对象数组)= 多行记录
- 引用关系 = 外键约束
class Member{
private int mid;
private String name;
private Car car; //表示属于某个人的车
public Member(){}
public Member(int mid, String name){
this.mid = mid;
this.name = name;
}
public void setMid(int mid){
this.mid = mid;
}
public int getMid(){
return this.mid;
}
public void setCar(Car car){ //设置引用关系
this.car = car;
}
public Car getCar(){
return this.car;
}
public String getInfo(){
return "人员编号:" + this.mid + "人员姓名:" + this.name;
}
}
class Car{
private int cid;
private String cname;
private Member member; //表示车属于某个人
public Car(){}
public Car(int cid, String cname){
this.cid = cid;
this.cname = cname;
}
public void setCid(int cid){
this.cid = cid;
}
public void setCname(String cname){
this.cname = cname;
}
public int getCid(){
return this.cid;
}
public String getCname(){
return this.cname;
}
public void setMember(Member member){
this.member = member;
}
public Member getMember(){
return this.member;
}
public String getInfo(){
return "车牌编号:" + this.cid + " 车的名字:" + this.cname;
}
}
public class Demo{
public static void main(String args[]){
Member mem1 = new Member(10,"蒋辉");
Member mem2 = new Member(11,"杨林");
Member mem3 = new Member(12,"万乐");
Car car1 = new Car(1001,"二手大众");
Car car2 = new Car(1002,"奔驰");
Car car3 = new Car(1003,"宝马");
mem1.setCar(car1); //配置好引用关系
mem2.setCar(car2);
mem3.setCar(car3);
car1.setMember(mem1);
car2.setMember(mem2);
car3.setMember(mem3);
//通过一个人找到他的车
System.out.println(mem1.getInfo());
System.out.println(mem1.getCar().getInfo()); //mem1调用member中的getCar()方法,car1对象调用Car类的getInfo方法输出车的信息
System.out.println("*****************");
//通过一个车找到它的主人
System.out.println(car2.getInfo());
System.out.println(car2.getMember().getInfo());
}
}
/*------------------------------------------------------------
F:\Code>java Demo
人员编号:10人员姓名:蒋辉
车牌编号:1001 车的名字:二手大众
*****************
车牌编号:1002 车的名字:奔驰
人员编号:11人员姓名:杨林
F:\Code>*/
//描述这样的关系:一个Member类,一个Car类,每辆车都有一个人(member),member类的人可能有儿子child,而child也可能有车
public class Demo{
public static void main(String args[]){
Member mem1 = new Member(10,"AAA");
Member mem2 = new Member(10,"BBB");
Member mem3 = new Member(10,"CCC");
Member chd1 = new Member(101,"DD");
Car car1 = new Car(8001,"车1");
Car car2 = new Car(8002,"车2");
Car car3 = new Car(8003,"车3");
Car car4 = new Car(8004,"车4");
mem1.setCar(car1); //给人配车
mem2.setCar(car2);
mem3.setCar(car3);
chd1.setCar(car4);
mem1.setChild(chd1); //给人配孩子
car1.setMember(mem1); //给车配人
car2.setMember(mem2);
car3.setMember(mem3);
car4.setMember(chd1);
System.out.println("car1的车主的孩子的信息");
System.out.println(car1.getMember().getChild().getCar().getInfo());
//System.out.println(mem1.getChild().getCar().getInfo());
}
}
class Member{
private int mid;
private String name;
private Member child; //一个人可能有个孩子
private Car car; //一个人可能有辆车
public Member(){}
public Member(int mid, String name){
this.mid = mid;
this.name = name;
}
public void setMid(int mid){
this.mid = mid;
}
public void setName(String name){
this.name = name;
}
public int getMid(){
return this.mid;
}
public String getName(){
return this.name;
}
public void setCar(Car car){
this.car = car;
}
public void setChild(Member child){
this.child = child;
}
public Car getCar(){
return this.car;
}
public Member getChild(){
return this.child;
}
public String getInfo(){
return "人员编号:" + this.mid + " 人员姓名:" + this.name;
}
}
class Car{
private int cid;
private String cname;
private Member member; //一辆车属于一个人
private Member child; //一辆车的主人可能有某个孩子(可以根据车主找到车主孩子的信息)
public Car(){}
public Car(int cid, String cname){
this.cid = cid;
this.cname = cname;
}
public void getCid(int cid){
this.cid = cid;
}
public int getCid(){
return this.cid;
}
public void setCname(String cname){
this.cname = cname;
}
public String getCname(){
return this.cname;
}
public void setMember(Member member){
this.member = member;
}
public Member getMember(){
return this.member;
}
public String getInfo(){
return "车的编号:" + this.cid + " 车的型号:" + this.cname;
}
}
//Emp(empno,ename,job,sal,comm,mgr) //dept(deptno,dname,loc) class Emp{ private int empno; private String ename; private String job; private double sal; private double comm; //设置引用关系--一个雇员属于一个部门,一个雇员有0个或1个领导 private Dept dept; private Emp mgr; public void setDept(Dept dept){ this.dept = dept; } public void setMgr(Emp mgr){ this.mgr = mgr; } public Dept getDept(){ return this.dept; } public Emp getMgr(){ return this.mgr; } //setter,getter略 public Emp(){} public Emp(int empno, String ename, String job, double sal, double comm){ this.empno = empno; this.ename = ename; this.job = job; this.sal = sal; this.comm = comm; } public String getInfo(){ return "empno = " + this.empno + "\n" + "ename = " + this.ename +"\n" + "job = " + this.job + "\n" + "sal = " + this.sal + "\n" + "comm = " + this.comm + "\n" ; } } class Dept{ private int deptno; private String dname; private String loc; //设置引用关系--一个部门有多个雇员 private Emp[] emp; public void setEmp(Emp[] emp){ this.emp = emp; } public Emp[] getEmp(){ return emp; } //setter,getter略 public Dept(){} public Dept(int deptno, String dname, String loc){ this.deptno = deptno; this.dname = dname; this.loc = loc; } public String getInfo(){ return "deptno=" + this.deptno + "\n" + "dname=" + this.dname + "\n" + "loc=" + this.loc; } } public class Demo{ public static void main(String args[]){ //1,2,3为销售,6为他们的领导,4,5为技术 Emp emp1 = new Emp(1001,"AA","销售",3500.0,2000.0); Emp emp2 = new Emp(1002,"BB","销售",4500.0,800.0); Emp emp3 = new Emp(1003,"CC","销售",3200.0,100.0); Emp emp4 = new Emp(1004,"DD","技术",6500.0,2000.0); Emp emp5 = new Emp(1005,"EE","技术",8500.0,2000.0); Emp emp6 = new Emp(1006,"FF","销售",9000.0,2500.0); Dept dept1 = new Dept(10,"销售部","13楼"); Dept dept2 = new Dept(11,"技术部","14楼"); //设置引用关系 emp1.setMgr(emp6); emp2.setMgr(emp6); emp3.setMgr(emp6); emp4.setDept(dept2); emp5.setDept(dept2); emp6.setDept(dept1); emp1.setDept(dept1); emp2.setDept(dept1); emp3.setDept(dept1); dept1.setEmp(new Emp[]{emp1,emp2,emp3,emp6}); dept2.setEmp(new Emp[]{emp4,emp5}); //输出部门1的所有雇员的信息 System.out.println("输出部门1的所有雇员的信息:"); for(int x=0; x<dept1.getEmp().length;x++){ System.out.println(dept1.getEmp()[x].getInfo()); } } }