jeudi 18 juin 2020

Java factory but objects have slightly differrent attributes

I want to program a factory that creates two types of People which are "Employee" and "Entrepreneur". They both share the same basic "Person" attributes but they also implements their unique ones.
The problem is that if i want to return a method or an attribute that is not declared in the "Person" abstract class the program doesn't find it (since obviously I'm generating an object that is type "Person" and not specifically "Employee" or "Entrepreneur" ).
How do i tackle this problem?

This is the Demo class

public class Demo{
    public static void main(String[] args){
        PersonFactory pf = new PersonFactory();
        Person p1 = pf.getPerson("Employee");
        p1.presentation();

        System.out.println(p1.getComplanyName());

    }
}

This is the abstract class

public abstract class Person{

    String name;
    String surname;

    abstract void presentation();

}  

Those are the two concrete classes that extend Person

public class Entre extends Person{

    int licenseNumber;

    @Override
    public void presentation(){
        System.out.println("hi i'm an Entrepreneur");
    }

    public int licenseNumber(){
        return licenseNumber;
    }
}



public class Empl extends Person{

    String companyName;

    @Override
    public void presentation(){
        System.out.println("hi i'm an employee");
    }

    public String getCompanyName(){
        return companyName;
    }
}  

Finally the Factory

public class PersonFactory{

    public Person getPerson(String type){
        if(type.equalsIgnoreCase("ENTREPRENEUR")){
            return new Entre();
        }
        else if(type.equalsIgnoreCase("Employee")){
            return new Empl();
        }
        return null;
    }
}

Aucun commentaire:

Enregistrer un commentaire