Superclass resets already active objects
<p>It's a little bit difficult but i'll try to explain my problem. I've created a program with a superclass (<code>RichIndustrialist</code>) two subclasses (<code>PredecessorRichIndustrialist</code> and another one I didn't add) and 4 subclasses to these subclasses (<code>CrazyRichIndustrialist</code> and another 3). Now, the program is too difficult to explain but the problem is actually simple. My constructor is in the superclass and every subclass use it to initilize. Every time I create a new subclass object like <code>CrazyRichIndustrialist</code>, it resets all the already existed subclasses (from any subclass) to the value of the new object. I don't know how to fix this. Thank you in advance...</p>

<p><code>RichIndustrialist</code>:</p>

<pre><code>package Mortal;

import java.util.Random;

public class RichIndustrialist implements Mortal {

    private static String Name;
    private static double holdings;
    private static int Alive;

    public RichIndustrialist(String Rich_Name, double Rich_holdings) {
        this.Name = Rich_Name;
        this.holdings = Rich_holdings;
        this.Alive = 1;
    }

    public int isAlive() {
        return (this.Alive);
    }

    public void setHoldings(double new_holdings) {
        this.holdings = new_holdings;
    }

    public double getHoldings() {
        return (this.holdings);
    }

    public String getName() {
        return (this.Name);
    }

    public void die() {
        this.Alive = 0;
    }

    public void getHeritage(double heritage) {
        this.holdings = this.holdings + heritage;
    }
}
</code></pre>

<p><code>PredecessorRichIndustrialist</code>:</p>

<pre><code>package Mortal;

import java.util.Arrays;

public class PredecessorRichIndustrialist extends RichIndustrialist {

    private static String Name;
    private static double holdings;
    private RichIndustrialist[] successors = {};
    private static int Alive;

    public PredecessorRichIndustrialist(String Rich_Name, double Rich_holdings) {
        super(Rich_Name,Rich_holdings);
    }

    public void die() {
        super.die();
    }

    public void Inheritance(double holdings, RichIndustrialist[] successors) {
        int i = 0;
        while (i &lt; successors.length) {
            int Alive = successors[i].isAlive();
            System.out.println(Alive);
            if (Alive == 0) {
                removeSuccessor(successors[i]);
                i++;
            } else {
                i++;
            }
        }
    }

    public void addSuccessor(RichIndustrialist new_successor) {
        RichIndustrialist[] new_successors = new RichIndustrialist[successors.length + 1];
        if (successors.length == 0) {
            new_successors[0] = new_successor;
            successors = new_successors;
        } else {
            for (int i = 0; i &lt; successors.length; i++) {
                new_successors[i] = successors[i];
            }
            new_successors[new_successors.length - 1] = new_successor;
        }
        this.successors = new_successors;
    }

    public void removeSuccessor(RichIndustrialist removed_successor) {
        RichIndustrialist[] new_successors = new RichIndustrialist[this.successors.length - 1];
        int j = 0;
        for (int i = 0; i &lt; this.successors.length; i++) {
            if (!this.successors[i].equals(removed_successor)) {
                new_successors[j] = this.successors[i];
            } else {
                j--;
            }
            j++;
        }
    }

    public RichIndustrialist[] getSuccessors() {
        return successors;
    }
}
</code></pre>

<p><code>CrazyRichIndustrialist</code>:</p>

<pre><code>package Mortal;

import java.util.Random;

public class CrazyRichIndustrialist extends PredecessorRichIndustrialist {

    private RichIndustrialist[] successors = {};
    private static String Name;
    private static double holdings;
    private static int Alive;

    public CrazyRichIndustrialist(String Rich_Name, double Rich_holdings) {
        super(Rich_Name,Rich_holdings);
    }
    public void die() {
        super.die();
        Inheritance(getHoldings(),getSuccessors());
    }   

    public void addSuccessor(RichIndustrialist new_successor) {
        super.addSuccessor(new_successor);
    }

    public void removeSuccessor(RichIndustrialist removed_successor) {
        super.removeSuccessor(removed_successor);
    }

    public void Inheritance (double holdings , RichIndustrialist[] successors) {
        super.Inheritance(holdings, successors);
        for (int i=0; i&lt;successors.length-1; i++)
        {
            double random = new Random().nextDouble();
            double amount = this.holdings * random;
            successors[i].getHeritage(amount);
            holdings = this.holdings - amount;
        }
        successors[successors.length-1].getHeritage(this.holdings);
        this.holdings = 0;
    }

    public String getName(){
        return super.getName();
    }
    public double getHoldings(){
        return super.getHoldings();
    }
    public RichIndustrialist[] getSuccessors(){
        return super.getSuccessors();
    }
    public void setHoldings(double new_holdings){
        super.setHoldings(new_holdings);
    }
    public int isAlive() {
        return super.isAlive();
    }
    public void getHeritage(double heritage) {
        super.getHeritage(heritage);
    }

}
</code></pre>
