已知Son是Father的子类,那么:
1> Son s1 = new Son();
2> Father s2 = new Son();
以上两种对象的初始化方式有何区别(除了s1是Son类型,s2是Father类型),还有一般在什么情况下使用第二种初始化方式啊?谢谢
1> Son s1 = new Son();
2> Father s2 = new Son();
以上两种对象的初始化方式有何区别(除了s1是Son类型,s2是Father类型),还有一般在什么情况下使用第二种初始化方式啊?谢谢
=======================
lz想说的应该是Father* s2 = new Son(); 吧
将一个子类对象付给一个父类指针;
至于什么情况下用,可能在父类有虚函数的时候会用到,具体看需求
说明Son是Father的子类
把子类对象看作父类对象称为 向上转型详细参看<thinking in java> 复用类 和 多态 两章
S2中只具有Father中定义的方法,子类中另外定义的方法(父类中没有的)不能用,想用的话要强制类型转换成子类的引用才能用
另外多态时, 如果有重载的方法存在, 这会决定调用哪个方法。 比如:
public void method(Father father) {}
public void method(Son son){}
这种情况下, 调用method方法, 具体调用哪个就决定于你声明时的类型。