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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马静 初级黑马   /  2014-8-15 09:46  /  1574 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

可以解释的复杂一些基础一些吗,我怕我还是听不懂,谢谢了

2 个回复

倒序浏览
覆盖是跟多态和动态绑定联系在一起的。你拿着父类引用调用一个方法,实际被调用的方法取决于父类引用指向的对象是哪一个(父类或某一个子类对象)。但静态方法本身不与任何对象相联系(虽然Java允许通过对象来调用静态方法,但某些OO语言,如Objective-C是不允许用对象来调用静态方法的),自然也就不会和多态相联系,谈不上覆盖了。
回复 使用道具 举报
毕向东老师的视频里说:静态方法只能覆盖静态方法,我理解为可以覆盖,只是没什么意思吧了。
  1. class Fu{
  2.         public static void print(){
  3.                 System.out.println("这是父类");
  4.         }
  5. }

  6. class Zi extends Fu{
  7.         public static void print(){
  8.                 System.out.println("这是子类");
  9.         }
  10. }
  11. public class Demo{
  12.         public static void main(String[] args){
  13.                 Fu f=new Zi();
  14.                 f.print();
  15.                 Zi z=(Zi)f;
  16.                 z.print();
  17.         }
  18. }
复制代码


打印值看的是类类型变量,类类型变量是什么类型,就调用哪个方法。与new无关。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马