I'm relatively new to Java, and I'm trying to use composition within a created a Resident class which extends another class, Person. I'm getting a null pointer exception error that points to this line of code:
equipment.setEquipment(hasInitialEquipment);
in my constructor in the resident class. I know that I must be doing something wrong but I'm really not sure what it is. Any help would be greatly appreciated.
public class Driver1 {
public static void main(String[] args) {
Resident a = new Resident("Bob Smith", 74, "Male", 317, 'C', false, false, "");
a.writeOutput();
System.out.println();
}
}
The class Person
public class Person {
private String name;
public Person()
{
name = "No name given";
}
public Person(String initialName)
{
name = initialName;
}
public String getName()
{
return name;
}
public void setName(String newName)
{
name = newName;
}
public void writeOutput()
{
System.out.println(name);
}
}
The Class Resident
public class Resident extends Person {
public static final int DEFAULT_AGE = 0;
public static final int DEFAULT_ROOM = 0;
private int age;
private String gender;
private int room;
private char building;
private boolean supervised;
private Equipment equipment;
public Resident()
{
super();
age = DEFAULT_AGE;
gender = "Undeclared";
room = DEFAULT_ROOM;
building = '0';
supervised = false;
}
public Resident(String initialName, int initialAge, String initialGender,
int initialRoom, char initialBuilding, boolean needsSupervision,
boolean hasInitialEquipment, String initialEquipmentType)
{
super(initialName);
age = initialAge;
gender = initialGender;
room = initialRoom;
building = initialBuilding;
supervised = needsSupervision;
equipment.setEquipment(hasInitialEquipment);
equipment.setEquipmentType(initialEquipmentType);
}
public int getAge()
{
return age;
}
public void setAge(int newAge)
{
age = newAge;
}
public String getGender()
{
return gender;
}
public void setGender(String newGender)
{
gender = newGender;
}
public int getRoom()
{
return room;
}
public void setRoom(int newRoom)
{
room = newRoom;
}
public char getBuilding()
{
return building;
}
public void setBuilding(char newBuilding)
{
building = newBuilding;
}
public boolean getSupervised()
{
return supervised;
}
public void setSupervised(boolean newSupervised)
{
supervised = newSupervised;
}
public boolean getEquipment()
{
return equipment.getEquipment();
}
public String getEquipmentType()
{
return equipment.getEquipmentType();
}
@Override
public void writeOutput()
{
System.out.println(getName());
System.out.println("Age: " + age);
System.out.println("Gender: " + gender);
System.out.println("Room: " + room);
System.out.println("Building: " + building);
if(supervised){
System.out.print("***Supervised Ambulation only***");
if(getEquipment())
System.out.println(getEquipmentType());
}
}
}
The Class Equipment
public class Equipment {
private boolean equipment;
private String equipmentType;
public Equipment()
{
equipment = false;
equipmentType = null;
}
public Equipment(boolean initialEquipment, String initialEquipmentType)
{
equipment = initialEquipment;
equipmentType = initialEquipmentType;
}
public boolean getEquipment()
{
return equipment;
}
public void setEquipment(boolean newEquipment)
{
equipment = newEquipment;
}
public String getEquipmentType()
{
return equipmentType;
}
public void setEquipmentType(String newEquipmentType)
{
equipmentType = newEquipmentType;
}
public void WriteOutput()
{
if(equipment)
System.out.println("Equipment: " + equipmentType);
}
}