Friday, 17 January 2014

Java Method Overriding

Refer this link and make some changes in the existing file Encapsulation and Subclasses In Java (Employee Project)

/*Program for Overriding 
* Change the codes from EmployeeTest.java file and Make other package say "com.example.business" in the same folder.
* In the package com.example.business add the Class "EmployeeStockPlan"
*/
/*EmployeeTest.java Code*/
package com.example;
/*@author Aqib */
import com.example.business.EmployeeStockPlan;//importing the package in this file
import com.example.domain.Admin;
import com.example.domain.Director;
import com.example.domain.Employee;
import com.example.domain.Engineers;
import com.example.domain.Manager;
public class EmployeeTest {
    private int eid;
    private String ename;
    private String essn;
    private double esalary;

    public void setEid(int eid) {
        this.eid = eid;
    } 

    public void setEname(String ename) {
        this.ename = ename;
    }   

    public void setEssn(String essn) {
        this.essn = essn;
    }   

    public void setEsalary(double esalary) {
        this.esalary = esalary;
    }
    
    public static void printEmployee(Employee eobj){
        System.out.println("--Employee constructor is called--");
        System.out.println(eobj);
    }
    
    public static void printEmployee(Employee eobj, EmployeeStockPlan esp){
        printEmployee(eobj);/*Replaced codes*/
        System.out.println("Employee Stock: " + esp.grantStock(eobj));
    }
    
    public static void printEmployee(Manager mobj){
        System.out.println("--Manager constructor is called--");
        System.out.println("Employee Id is " + mobj.getEid());
        System.out.println("Employee Name is " + mobj.getEname());
        System.out.println("Emploee SSN number is " + mobj.getEssn());
        System.out.println("Employee Salary is " + mobj.getEsalary());
        System.out.println("Employee Department Name is " + mobj.getDeptName());
    }
    
     public static void printEmployee(Admin aobj){
        System.out.println("--Admin constructor is called--");
         System.out.println("Employee Type : " + aobj.getClass().getSimpleName());//to get the name of the class
        System.out.println("Employee Id is " + aobj.getEid());
        System.out.println("Employee Name is " + aobj.getEname());
        System.out.println("Emploee SSN number is " + aobj.getEssn());
        System.out.println("Employee Salary is " + aobj.getEsalary());
    }
     
      public static void printEmployee(Director dobj){
        System.out.println("--Director constructor is called--");
        System.out.println("Employee Id is " + dobj.getEid());
        System.out.println("Employee Name is " + dobj.getEname());
        System.out.println("Emploee SSN number is " + dobj.getEssn());
        System.out.println("Employee Salary is " + dobj.getEsalary());
    }
    public static void main(String[] args) {
        // TODO code application logic here
        Engineers eobj = new Engineers(101,"Aqib Ferhan","012-98-9898",120_345.98);
        Manager mobj = new Manager(120,"John","239-97-09090",130_89.65,"US Manager");
        Admin aobj = new Admin(139,"Sam Coles","439-09-8776",450_454.90);
        Director dobj = new Director(120,"John","239-97-09090",130_89.65,"US Manager");
        EmployeeStockPlan esp = new EmployeeStockPlan();
        printEmployee(eobj);
        printEmployee(mobj);
        printEmployee(aobj);
        printEmployee(dobj);
        printEmployee(eobj, esp);
    }
}

/*EmployeeStockPlan.java code in the package com.example.business*/
package com.example.business;

import com.example.domain.Director;
import com.example.domain.Employee;
import com.example.domain.Manager;

public class EmployeeStockPlan {
    private final int empshare=10;
    private final int mgrshare=100;
    private final int dirshare=1000;
    
    public int grantStock(Employee eobj){
        if(eobj instanceof Director){
            return dirshare;
        }else{
            if(eobj instanceof Manager){
                return mgrshare;
            }else{
                return empshare;
            }
        }
    }
}
/*Employee.java File */

package com.example.domain;
public class Employee {
private int eid;
private String ename,essn;
private double esalary;
    public int getEid() {
        return eid;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public String getEssn() {
        return essn;
    }
    public double getEsalary() {
        return esalary;
    }
//method is added here which is overriden in Manager.java Class
    public String toString(){
        return "Employee Id" + getEid() + "\n" + "Employee name:" + getEname() + "\n" + "Employee SSN" + getEssn() + "\n" 

+ "Employee salary" + getEsalary();
    }

    public Employee(int eid, String ename,String essn,double esalary) {
        this.eid=eid;
        this.ename=ename;
        this.essn=essn;
        this.esalary=esalary;
    }
    public void raiseSalary(double increase){
        esalary+=increase;
    }
}

/*Manager.java file*/
package com.example.domain;

public class Manager extends Employee {
    private String deptName;
    
    public Manager(int eid, String ename,String essn,double esalary,String deptName){
        super(eid,ename,essn,esalary);
        this.deptName=deptName;
    }
    @Override
    public String toString(){
        return super.toString() + "Department Name" + getDeptName();
    }

    public String getDeptName() {
        return deptName;
    }
}
Output is changed at red underlines

1 comment: