引用传递实际应用

简单Java类和数据表的关系:

  1. 类名称 = 表名称
  2. 属性名称 = 表字段
  3. 属性类型 = 表字段类型
  4. 一个实例化对象 = 一行记录
  5. 多个实例化对象(对象数组)= 多行记录
  6. 引用关系 = 外键约束
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());
        }
    }
}

 

posted @ 2019-02-15 14:48  眉毛病  阅读(219)  评论(0编辑  收藏  举报