I'm trying (studying how to) to take advantage of creating abstract class and then subclasses etc. I have superclass Person:
public abstract class Person {
private String name;
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
And subclasses, for example:
public class Man extends Person{
private String occupation;
public void setOccupation(String occupation) {
this.occupation = occupation;
}
public String getOccupation() {
return occupation;
}
@Override
public void setType(String type) {
super.setType(type);
}
@Override
public String getType() {
return super.getType();
}
@Override
public void setName(String name) {
super.setName(name);
}
@Override
public String getName() {
return super.getName();
}
}
and a Teenager:
public class Teenager extends Person{
private String stdyPlace;
public String getStdyPlace() {
return stdyPlace;
}
public void setStdyPlace(String stdyPlace) {
this.stdyPlace = stdyPlace;
}
@Override
public void setType(String type) {
super.setType(type);
}
@Override
public String getType() {
return super.getType();
}
@Override
public void setName(String name) {
super.setName(name);
}
@Override
public String getName() {
return super.getName();
}
So, further I want to do different acts depends on object type. I wanted smth like:
Person pM;
switch (typeOfPerson){
case "Man": pM=new Man(); pM.setOccupation("military"); ...other acts that regards this type of object...; break; //doesn't work
case "Student": pM=new Teenager(); pM.setStdyPlace("Boston"); ...other acts that regards this type of object...; break; //doesn't work too
}
pM.setName(en);
pM.setType(tp);
But the problem is, pM behave like a Person only. I can't find out how to cast it to type I want. Question is: how to cast it?