2 Answers
2

In the first example, you are not merely instantiating a contract that is there. You are deploying a new instance and passing arguments into the constructor function. Constructors run one time only, by design, and are not even included in the deployed bytecode (because they can't be run again).

In the second example, you are instantiating a contract that is already there. There is no need or possible use of arguments because the contract is already deployed and the constructor cannot be run again.

The second example is creating an instance of the contract at a specific address that already exists on the blockchain. You pass in the address to MyContract to tell the EVM where to look when executing the code.

To call a function on this contract you will do reference the name you gave it (in this case, mine) and call the function using that. This is where you can pass in the desired parameters.