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;
}
}
/*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 |