本帖最后由 zhangpeng12340302 于 2011-04-19 22:57:32 编辑

解决方案 »

  1.   

    如果某个方法是静态的,它的行为就不具有多态性------来自《JAva编程思想》157页
      

  2.   

    静态方法的一大特征就是无法使用this引用,由此可见方法都是早绑定,编译阶段就确定了的
      

  3.   

    //向上转型//如果声明为Ostrich ostrich1 =new Ostrich();结果会怎么样呢?
    //为什么?
    去掉的话,输出结果为“I can't fly!”,方法调用首先是在自己这个类找,找不到再从父类找。
    //去掉static是重载还是重写还是遮蔽,不去为什么是遮蔽,遮蔽是什么意思
    去掉的话,是遮蔽。
    遮蔽就是子类由于命名和父类相同,而导致无法使用父类的变量,但是这些变量是存在于子类中的。
    public class A{
        int a=1;
        public static void main(String args[]){
            B b = new B();
            System.out.println(b.a);
        }
    }
    class B extends A{
        int a=0;
    }
    最好能单步调试一下,就能理解什么是遮蔽啊。
    重载:子类方法覆盖父类方法(它们的方法签名要相同),子类在调用被重载的方法时,就会调用子类的新方法,除非使用super关键字,才会调用父类方法。
      

  4.   

    静态方法不会覆盖,因为它是和类相关而不是对象
    ostrich1.fly();等价于Ostrich.fly()
      

  5.   

    //去掉static是重载还是重写还是遮蔽,不去为什么是遮蔽,遮蔽是什么意思
    别人不是说了去掉static了吗?
    真不知道,大家都是怎么看的