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);
 }
}
 
    