2016-02-07 35 views
-1

我學習Java封裝了。當我看到這兩個程序時,我陷入了困境。 請爲什麼EmployeeDetails是所謂的EmpBusinessLogic.java類我怎麼解釋。 也就是卡住了這個Java程序。請解釋爲什麼EmployeeDetails是所謂的EmpBusinessLogic.java

public double calculateYearlySalary(EmployeeDetails employeeDetails) 

在上面的行中,EmployDetails是如何調用的? 我詢問這樣一個愚蠢的問題抱歉,但我卡在這裏。 非常感謝支持!

EmployeeDetails.java

public class EmployeeDetails { 

      private String name; 
      private double monthlySalary; 
      private int age; 

      // @return the name 

      public String getName() { 
       return name; 
      } 

      // @param name the name to set 

      public void setName(String name) { 
       this.name = name; 
      } 

      // @return the monthlySalary 

      public double getMonthlySalary() { 
       return monthlySalary; 
      } 

      // @param monthlySalary the monthlySalary to set 

      public void setMonthlySalary(double monthlySalary) { 
       this.monthlySalary = monthlySalary; 
      } 

      // @return the age 

      public int getAge() { 
       return age; 
      } 

      // @param age the age to set 

      public void setAge(int age) { 
      this.age = age; 
      } 
     } 

EmpBusinessLogic.java:

public class EmpBusinessLogic { 

      // Calculate the yearly salary of employee 
      public double calculateYearlySalary(EmployeeDetails employeeDetails) //How and Why EmployeeDetails is taken here? 
{ 
       double yearlySalary = 0; 
       yearlySalary = employeeDetails.getMonthlySalary() * 12; 
       return yearlySalary; 
      } 

      // Calculate the appraisal amount of employee 
      public double calculateAppraisal(EmployeeDetails employeeDetails){ 

       double appraisal = 0; 

       if(employeeDetails.getMonthlySalary() < 10000){ 
       appraisal = 500; 

       }else{ 
       appraisal = 1000; 
       } 

       return appraisal; 
      } 



     } 

回答

0

它不叫。它就像是說你提供的服務(在這種情況下,服務將是雙倍的),你想要付款(付款是EmployDetails)。提供EmployDetails你給雙倍。所以,當你想打電話給你calculateYearlySalary提供作爲參數EmployDetails類的實例,它給你回(回報)的兩倍。

查看MethodsObjects,您可以在其中找到有關如何創建對象以及如何將它們「傳遞」到方法的更多信息。

0

即線public double calculateYearlySalary(EmployeeDetails employeeDetails)是這樣的方法定義。

首先是訪問修飾符public,第二是返回類型double,則該方法的名稱。之後在括號中是參數。每個參數都用逗號分隔。 (例如public int foo(int first, double second, boolean third))。每個參數由兩部分組成。首先是參數的類型(在你的例子是EmployeeData,在我的例子它intdoubleboolean),二是將存儲的參數(在你的榜樣employeeDetails變量的名字,在我的例子firstsecondthird

+0

*「每個參數包含兩個「單詞」。「* - >」每個參數包含_at least_ two「單詞」。「。可以有兩個以上。 – Tom

+0

是的,我應該說的部分。我不記得這個詞。 -_-這就是爲什麼它在引號 – Meegoo

+0

那麼,如果你稱之爲「單詞」或「部分」與「至少」失蹤無關; P。參數可以包含多於兩個部分。 – Tom

0

我會在EmployeeBusinessLogic中創建靜態函數,因爲業務邏輯似乎更多的是實用函數。

示例代碼在這裏:

package general; 

public class EmployeeBusinessLogic { 
    // Calculate the yearly salary of employee 
    public static double calculateYearlySalary(EmployeeDetails employeeDetails) { //How and Why EmployeeDetails is taken here? 
     double yearlySalary = 0; 
     yearlySalary = employeeDetails.getMonthlySalary() * 12; 
     return yearlySalary; 
    } 

    // Calculate the appraisal amount of employee 
    public static double calculateAppraisal(EmployeeDetails employeeDetails){ 
     double appraisal = 0; 
     if (employeeDetails.getMonthlySalary() < 10000) { 
      appraisal = 500; 
     } else { 
      appraisal = 1000; 
     } 
     return appraisal; 
    } 

    public static void main(String[] args) { 
     EmployeeDetails emp1 = new EmployeeDetails(); 
     emp1.setAge(30); 
     emp1.setName("Rob Dylan"); 
     emp1.setMonthlySalary(4000); 
     System.out.println("Annual salary of " + emp1.getName() + " is " + calculateYearlySalary(emp1)); 
    } 
} 

輸出如下:

羅布·迪倫的年薪爲48000.0

0

WHY:

這樣就可以使用EmployeeDetails類的方法。

爲了獲取關於你的EmpBusinessLogic類的,你需要傳遞一個EmployeeDetails對象的方法的員工的信息,所以現在基於此對象的你計算出員工的年薪,同樣其他員工

的如何: 首先您創建EmployeeDetails類的對象並填寫所有信息。

EmployeeDetails details=new EmployeeDetails() 
details.setMonthlySalary(22222.22); 

下次你做一個EmpBusinessLogic對象

現在,當你打電話,你可以通過EmployeeDetails對象這一類的方法,並獲得工資細節和其他的東西

EmpBusinessLogic logic=new EmpbusinessLogic(); 
System.out.println(logic.calculateYearlySalary(EmployeeDetails details));