请问:
这是think in java上的:
动态绑定 它的含义就是在运行是根据对象的类型进行绑定 也就是说 编译器一直不知道对象的类型 我的疑问:
如果编译器将子类和基类当成同一种类型 那么我将基类对象赋给子类引用的时候为什么不可以呢 这说明编译器在编译期可以判断出基类和子类是不同的类型啊 谢谢
这是think in java上的:
动态绑定 它的含义就是在运行是根据对象的类型进行绑定 也就是说 编译器一直不知道对象的类型 我的疑问:
如果编译器将子类和基类当成同一种类型 那么我将基类对象赋给子类引用的时候为什么不可以呢 这说明编译器在编译期可以判断出基类和子类是不同的类型啊 谢谢
解决方案 »
- 我莔了,关于回文字符串
- html的String不能在JEditorPane显示
- 一道基础面试题,郁闷了半天
- 关于java调用dll的一个问题(高手进来)
- 关于线程问题,请帮我看看呀。谢谢各位。
- 急救 关于自动验证表单文本框 已输入的文字个数
- 来看看我写的java计算器代码 出什么问题了
- JTable 高难问题............
- 多线程怎么传递参数并得出返回值?
- 如何通过jdbc将文件放到数据库里?
- 一副牌出去大小王,分给四个人。出现错误。Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
- web应用怎样设置并使用cookie??
class SubClass extends SuperClass {}public class Test { /**
* @param args
*/
public static void main(String[] args) {
// 1.
SubClass sub = new SubClass();
SuperClass sup = sub;
SubClass sub2 = (SubClass)sup; // 没问题
// 2.
SuperClass sup2 = new SuperClass();
SubClass sub3 = (SubClass)sup2; // 语法上没错, 但是逻辑上有问题, 类型转换发生异常
}
}父类对象不能直接赋值给子类对象.
如果一个对象是子类对象, 先赋值给父类对象, 再由这个父类对象赋值给子类对象, 这时没有任何问题.
假定动物类 狗类继承动物类
动物类 a ;
狗类 b = new 狗类
a = (动物类)b;//可以 狗是一种动物 狗具有动物的特征
狗类 b;
动物类 a = new 动物类
b = (狗类)a;//不可以 动物不是一种狗 动物类不包括狗类特有的特征你可以说
狗是一种动物
而不能说 动物是一种狗
is-a has-a