B
более специализирован, чем Object
, поэтому вы не можете назначить экземпляр Object
для ссылки B
. Это потому, что не каждый Object
на самом деле является B
- верно только обратное.
Предположим, у вас есть поле x
в классе B
. Когда вы создаете экземпляр Object
, для этого поля не зарезервирована память, и если вы можете назначить его для ссылки типа B
, он попытается выполнить чтение или запись в нераспределенную память, что недопустимо (или полезно). ).