You should explain it more Higor since this is a linchpin in the structure of OOP. I'll try but you could do a much, much better job for sure.
You are thinking of variables like classes and that's an easy thing to get confused. Iniquitous explained it to me and it made much more sense when he put it like this...
Think of a code class like an individual person. Multiple people (classes) all wear the same shirt and use the same unique language when they belong to the same package. You can take a marker and write on their shirts and these would be the variables and code. They each act according to what is written on their shirts. If two people with different shirts need to talk then some form of communication needs to be established because they can't directly talk without being in the same group. This is replication. Replication can be as simple as a custom mod telling the local computer what changes it makes in a single person game all the way up to a fully fleshed out entire gametype played across a packed server with 16 players.
This is Steve:
Steve is a red shirt and written on his shirt is the code for a
custom sniper rifle that does 150 damage per hit.
During the game there will be this exchange:
GameServer: Yo, Steve! I registered a hit by your player so how much damage do you do?
Steve: 150 across the board
GameServer: Thanks. <
speaks to blue player>: You have been damaged beyond your health. You are dead and are now respawning. Please display default heath and weapon loadout.
That's a super simple example and there are hundreds (thousands) of these conversations going on all the time between the code, the engine, and the player(s).