派生型(抽象クラスやクラスを継承したクラス)は、基本型(スーパークラス)と置換可能でなければなりません。
これは言語仕様のことではなく、API仕様のことです。つまり、実装での振る舞いの挙動が派生型により不都合を起こさないという意味です。