public abstract class Gate implements Cloneable { public abstract int inCount(); public abstract int outCount(); public abstract Wire inWire(int n); public abstract Wire outWire(int n); public abstract void act(); public abstract Object clone(); public String deepString() { return toString(); } static public Wire wireByNumber(int num) { return ourWireFactory.getWire(num); } static protected WireFactory ourWireFactory = new WireFactory(); }