各位大神,大家好。
本人之前了解过一些php,之前公司做电商平台第三方卖家,自己写过一两个小程序。对接电商API。
现看视频自学java。课程刚刚讲完this的概念,现在看到的这课是利用java模仿数据库,写一个一对多的录入查询功能。实现功能是:录入员工信息(设置员工与领导关系),录入部门信息,实现通过部门查询员工(领导),通过员工查询部门等等。具体功能大概是这个意思,但大家可以不纠结功能。目的只是有两个语法问题。代码如下:class Dept{
private int depton; //部门编号;
private String dname; //部门名称;
private String loc; //位置;
private Emp emps[];
public void setEmps(Emp emps[]){
this.emps = emps;
}
public Emp getEmps()[]{
return this.emps;
}
public Dept(int depton,String dname,String loc){
this.depton = depton;
this.dname = dname;
this.loc = loc;
}
public String getInfo(){
return "部门编号:"+this.depton + ",名称:"+ this.dname + ",位置:"+this.loc;
}


}
class Emp{
private int empon; //雇员编号;
private String ename; //名字
private String job; //职位
private double sal; //工资
private double comm; //佣金
private Dept dept;
private Emp mgr;
public void setMgr(Emp mgr){
this.mgr = mgr;
}
public Emp getMgr(){
return this.mgr;
}
public void setDept(Dept dept){
this.dept = dept;
}
public Dept getDept(){
return this.dept;
}

public Emp(int empon,String ename,String job,double sal,double comm){
this.empon = empon;
this.ename = ename;
this.job = job;
this.sal = sal;
this.comm = comm;
}
public String getInfo(){
return "雇员编号:"+this.empon+",名字:"+this.ename+",职位:"+this.job+",工资:"+this.sal+",佣金:"+this.comm;
}
}public class yiduiduo{
public static void main (String args[]){
//具体功能暂不讨论。
}
}
问题1:第六行,方法直接操作emps类,没有new实例化,这样就代表自动实例化了吗?问题2:第29和37行,我理解是29行声明类,然后37行操作类,但是假如先写 class Emp,然后再写class Dept,那么写Emp的时候就要先设计好,让开发者了解到,类名是Emp才可以,是否不能像PHP里面那样,将参数传递进来后,重新起个名字,用新名字接着使用,即使Dept后期改名,也可以使用。类的名字必须先定义后,后期尽量不改动?问题3:第九行:视频里的写法是:“public Emp [] getEmps(),但我按照php的思路,把代表数组的中括号放到了方法的后面也可以执行,请问一般大部分的写法是怎么写?问题4:教程里说必须要理解这个概念,我现在对程序的实现方法可以理解,但对业务逻辑还是有点混乱,请问这个在日后的开发中,是否经常遇到。还是说,目的只是要了解this的使用?谢谢大家。

解决方案 »

  1.   

    第六行 一般这么public void setEmps(Emp [] emps),Emp [] emps这个是调方法时需要传入的参数,参数类型为Emp []; 
      

  2.   

    class Dept{
        private int depton;                //部门编号;
        private String dname;            //部门名称;
        private String loc;                //位置;
        //private Emp emps[];  //声明emps,没有实例化
        private Emp[] emps;  //声明emps,没有实例化
        public void setEmps(Emp emps[]){
            this.emps = emps; //调用setEmps方法时,传参数emps,然后把参数emps赋值给上面声明的emps
        }
    //    public Emp getEmps()[]{
    //        return this.emps;
    //    }
        public Emp[] getEmps(){
            return this.emps;
        }
        public Dept(int depton,String dname,String loc){
            this.depton = depton;
            this.dname = dname;
            this.loc = loc;
        }
        public String getInfo(){
            return "部门编号:"+this.depton + ",名称:"+ this.dname + ",位置:"+this.loc;
        }
         
         
    }