我们知道,如果用向上转型的方法,可以将一个子类的对象赋值给父类的引用。
而这个父类的引用能够调用哪些成员(变量、函数),取决于这个引用的类型
而一个引用具体调用的是哪个方法,则取决于这个引用所指向的对象。
这里有一个问题,就是如果子类除了将父类中的函数重写之外,还加入了新的函数。那么这时候在引用一个子类对象的时候是否就不能再用父类的引用了?
举一个简单的例子
- class Father{
- void run(){
- System.out.print("run");
- }
- }
复制代码
- class Son{
- void run(){
- System.out.println("son run");
- }
-
- public void walk(){
- System.out.println("walk");
- }
- }
复制代码
- class Test{
- public static void main(String[] args){
- Father son = new Son();
- son.run();
- son.walk();
- }
- }
复制代码
这里Test类里的son.walk();就不能通过编译。
那么我们什么时候选择将子类对象赋值给父类引用呢?在这个选择上是否有什么标准? |
|