>>34
まず、どのmain関数が呼ばれるかはどのクラスを実行するかによります
javaを実行するとき 

java クラス名

と実行しますよね。このとき、指定したクラスのmainが呼ばれるのです。
もし、関連する他のクラスにmainメソッドがあってもそれは実行されません。
繰り返しますが、java クラス名 のクラスにあるmainメソッドが実行されます

そして、なぜassertがmainにあるかについてですが、特に深く考える必要もありません
Cardクラスを単体にTestするときに使うのでしょう