|
|
@ -692,6 +692,7 @@ public class Test {
|
|
|
|
1. 变量类型声明只是**调用能力声明**;
|
|
|
|
1. 变量类型声明只是**调用能力声明**;
|
|
|
|
2. 子类型对象的能力一定不小于父类型对象的能力;
|
|
|
|
2. 子类型对象的能力一定不小于父类型对象的能力;
|
|
|
|
3. 真正的行为表现要看其具体对象的类型,而不是看引用变量的类型。
|
|
|
|
3. 真正的行为表现要看其具体对象的类型,而不是看引用变量的类型。
|
|
|
|
|
|
|
|
4. 一个对象内部的可见(可以调用什么属性和方法)性由其引用对象所确定。
|
|
|
|
|
|
|
|
|
|
|
|
这样我们多态的规则就完备了。凡是以后关于多态的问题都可以由以上三条规则解释。
|
|
|
|
这样我们多态的规则就完备了。凡是以后关于多态的问题都可以由以上三条规则解释。
|
|
|
|
|
|
|
|
|
|
|
@ -753,7 +754,7 @@ Orange orange = fruit; // 非法
|
|
|
|
真实对象是子类型,而引用变量是父类型,这种情况是合法的。但是否可以转换回去?例如:
|
|
|
|
真实对象是子类型,而引用变量是父类型,这种情况是合法的。但是否可以转换回去?例如:
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
Object object = new GiantApple(); // 合法
|
|
|
|
Object object = new Orange(); // 合法
|
|
|
|
Orange orange = object; // 非法
|
|
|
|
Orange orange = object; // 非法
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|