一道有关多态的题目

1273阅读 0评论2008-11-04 zhu_xianfeng
分类:Java

本以为自己对面向对象的封装、继承、多态已经了解得很清楚了。

没想到,今天的一道Java笔试题自己却答错了。在这里,记下来,给自己提个醒,多学习。

package edu.dlut.zxf.test2;

interface Hello {
    public String getName();
    
    public void sayHello();
}

class Person implements Hello {
    public String getName() {
        return "Michael";
    }
    
    public void sayHello() {
        System.out.println(getClassName() + ": " + getName());
    }
    
    private String getClassName() {
        return "Person";
    }
}

public class Student extends Person {
    public String getName() {
        return "Finux";
    }
    
    /*
    public void sayHello() {
        System.out.println(getClassName() + ": " + getName());
    }
    */

    
    /**
     * 这个函数没有被用到,是迷惑你的哦
     */
    
    private String getClassName() {
        return "Student";
    }
    
    public static void main(String[] args) {
        Student s = new Student();
        s.sayHello();
        
        //下面的代码也是想迷惑人的
        Person p = (Person)s;
        p.sayHello();
        
        Hello h = (Hello)p;
        h.sayHello();
    }
}
//打印结果如下:
//Person: Finux
//Person: Finux

上一篇:让static方法具有泛型能力
下一篇:Merge Sort C++ 实现