A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© DD_vincent 中级黑马   /  2015-7-24 15:27  /  253 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我们知道,如果用向上转型的方法,可以将一个子类的对象赋值给父类的引用。
而这个父类的引用能够调用哪些成员(变量、函数),取决于这个引用的类型
而一个引用具体调用的是哪个方法,则取决于这个引用所指向的对象。

这里有一个问题,就是如果子类除了将父类中的函数重写之外,还加入了新的函数。那么这时候在引用一个子类对象的时候是否就不能再用父类的引用了?

举一个简单的例子
  1. class Father{
  2.         void run(){
  3.                 System.out.print("run");
  4.         }
  5. }
复制代码

  1. class Son{
  2.         void run(){
  3.                 System.out.println("son run");
  4.         }
  5.        
  6.         public void walk(){
  7.                 System.out.println("walk");
  8.         }
  9. }
复制代码

  1. class Test{
  2.         public static void main(String[] args){
  3.                 Father son = new Son();
  4.                 son.run();
  5.                 son.walk();
  6.         }
  7. }
复制代码


这里Test类里的son.walk();就不能通过编译。

那么我们什么时候选择将子类对象赋值给父类引用呢?在这个选择上是否有什么标准?

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马