黑马程序员技术交流社区

标题: 多态问题 [打印本页]

作者: 丁倩    时间: 2011-8-6 15:21
标题: 多态问题
  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以后就不能实现多态了?
作者: 匿名    时间: 2011-8-6 15:56
静态方法是在编译的时候把静态方法和类的引用类型进行匹配,而不是在运行的时候和类引用进行匹配。因此当我们在子类中创建的静态方法,它并不会覆盖父类中相同名字的静态方法。所以结果是parent.
作者: 匿名    时间: 2011-8-6 16:27
static  定义的方法属于这个类,由于是类的方法,它可以直接引用类名来引用方法,也可以通过类的对象来引用这个方法,既不能被子类覆盖,也不能被子类继承。简单的说,它是在编译的时候就和类绑定在一起了,不能被运行时动态加载。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2