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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁倩 黑马帝   /  2011-8-6 15:21  /  2106 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class Test3 {
  2.     public static void main(String[] args) {
  3.         Parent c = new Child();
  4.         System.out.println(c.getName());
  5.     }
  6. }
  7. class Parent {
  8.     public static String getName() {
  9.         return "Parrent";
  10.     }
  11. }
  12. class Child extends Parent {
  13.     public static String getName() {
  14.         return "child";
  15.     }
  16. }
复制代码
打印的结果是parent,难道加了static以后就不能实现多态了?

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2

查看全部评分

2 个回复

倒序浏览
黑马网友  发表于 2011-8-6 15:56:03
沙发
静态方法是在编译的时候把静态方法和类的引用类型进行匹配,而不是在运行的时候和类引用进行匹配。因此当我们在子类中创建的静态方法,它并不会覆盖父类中相同名字的静态方法。所以结果是parent.

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-8-6 16:27:55
藤椅
static  定义的方法属于这个类,由于是类的方法,它可以直接引用类名来引用方法,也可以通过类的对象来引用这个方法,既不能被子类覆盖,也不能被子类继承。简单的说,它是在编译的时候就和类绑定在一起了,不能被运行时动态加载。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马