Cat, Quine, Hello World
Python 3, Hello World + Quine = Cat, 129 bytes

Hello World:
import os,atexit as a
p=print
a.register(p,&quot;Hello World!&quot;)
def print(_):
 p(input())
 os._exit(0)

Quine:
s='s=%r;print(s%%s)';print(s%s)

Cat:
import os,atexit as a
p=print
a.register(p,&quot;Hello World!&quot;)
def print(_):
 p(input())
 os._exit(0)
s='s=%r;print(s%%s)';print(s%s)

atexit lets you define cleanup steps that will run when your program exits &quot;normally&quot;. In this case, I register the print function (renamed p) with the argument &quot;Hello World!&quot;, so it will print that string when the program ends.
I then redefine print to become a cat function. Normally, this would cause the program to print its input and &quot;Hello World!&quot;, but os._exit() is an &quot;abnormal&quot; exit that bypasses the cleanup steps.
Now that print has been redefined, the Quine simply calls this cat function and the program abruptly exits. If the Quine doesn't exist, then the program exits normally, printing &quot;Hello World!&quot; in the process.
The final program doesn't work on TIO, but it works for me running Python 3.7.3 on MacOS.