An Output is an abstract write. A specific output implementation will only have to override the writeByte and maybe the write, flush and close methods. See File.write and String.write for two ways of creating an Output.