PDF 课件和源代码下载地址:
https://gitee.com/geektime-geekbang/LetsJava
作者回复: 比如有水果类,子类有苹果,香蕉。水果类里只有getName方法。苹果和香蕉里还有别的随便什么方法。 那么Fruit friut = new Apple(); 这时候friut指向Apple的实例, “能调的方法取决于引用类型”,也就是取决于fruit的类型,因为Fruit只有getName方法,所以即使它指向的是Apple,还有别的方法,但是无法通过这个引用调用。 “但是实际调的方法取决于引用指向的对象的类型”,也就是取决于Apple的类型,getName方法执行的是Apple里的getName方法代码,而不是Fruit里的(Fruit甚至可以是一个接口)
作者回复: 哈哈哈哈哈哈哈
作者回复: 是的,在语言规则下,不能有二义性,有的话就要给出编译错误
作者回复: 可以认为没有
作者回复: 哈哈哈哈哈哈哈哈Java其实已经很克制了。很多语言的操作要sao的多了
作者回复: 执行没有任何不同。作用就是编译检查,如果没有覆盖,(比如父类把这个方法删了),就会报错
作者回复: 不需要一样,这里给出的例子就是展示静态方法没有多态。子类父类的静态方法如你理解的那样没有任何关系。