笑话比较拙劣,抱歉。例子未经验证,很可能最后一段在编译时也过不了。中心思想就是,类型 B 所指的那一小块内存其实是个 A,里面并没有 B 应该包含的数据。如果不小心按照 B 规定的方式去访问这些不存在的数据,计算机会生气。其实说「如果B c可指向 A 对编程来说不是更方便吗」也有道理,不过那样一来 Java 的整个静态类型系统就失去意义了。推广来说,凡是要求你在声明变量的时候指定这个变量的类型的语言,基本都不会允许你用 B 去指 A,虽然你可以从集合论或者模拟自然世界的角度去理解它,但这本质上是个语言设计的理念问题。