Note TFile::Open is static function that allocate a new TFile based on the URL passed as argument. The actually type of the object will a class derived from TFile in the cases where the file not local (reading it from an xrootd server for example).
Using a TFile object instead of TFile::Open restrict to only reading local files.
You can not change the filename of a TFile after the original constructor.