- 自动类型转换: 基本类型
- 向上转型: 多态
我学习的时候,对于自动类型转换很容易理解。但是对于向上转型总得思索一番。
我看很多视频提供了一个依靠自动类型转换来方便记忆的办法:
double a = 30;// a=30.0,自动发生
所以:
Fu f = new Zi(); // 自动发生。
他们将 Fu f
类比于 double a
;
new Zi()
类比于 int 30
。
我思索了一下,总觉得有点问题。
double a是double 类型,比int 类型范围要大的多。
但是
父类 f 要比 子类 范围大的多吗?
可我明显感觉子类要比范围父类范围更广啊。
父类能做的,我们东厂可以做。不对,我们子类可以做。
父类不能做的,我们子类也可以做。
同理:
int 能做的,我们double可以做。
int 不能做的,我们double也可以做。
所以,感觉double 更像 子类!!!
因此我觉得这个类比是有问题的。
那应该怎么从感性上去理解 Fu f = new Zi();
呢?
我自己想了想,觉得子类就是对父类的一种 继承、实现、改进
就像一种程序,一开始是1.0版本,而后是2.0版本。
从2.0回退到1.0很简单。
但是从1.0到2.0要经过很多努力。。
简单的自动发生,要努力的自然需要人为的干预,也就是强转。