方法重写

在类层次结构中,当子类中的方法与其超类中的方法具有相同返回类型和签名(方法名+形参为KEY的散列)时,就称为子类中的方法重写(override)了超类中的方法.当在子类中调用被重写的方法时,总是引用子类中的定义的方法,而超类中定义的方法将被隐藏.
public class test2
{
    // @param args
    public static void main(String args[])
    {
     Y y = new Y();
     y.show();
     
    }
}
class X
{
    void show()
    {
        System.out.println("this is X method");
    }
}
class Y extends X
{
    void show()
    {
        System.out.println("this is Y method");
    }
}
输出:
this is Y method
当调用y对象的show()时,将使用y中定时的show(),即y中的show()重写了x中的声明的show()
要访问超类中被重写的方法,就要使用super,例如:
class Y extends X
{
    void show()
    {
        super.show();
        System.out.println("this is Y method");
    }
}
输出:
this is X method
this is Y method
方法重写只在两个方法签名一致时才发生,如果有不一致的地方,那么两个方法就只是重载而已:
public class test2
{
    // @param args
    public static void main(String args[])
    {
     Y y = new Y();
     y.show(1);
     
    }
}
class X
{
    void show()
    {
        System.out.println("this is X method");
    }
}
class Y extends X
{
    void show()
    {
        super.show();
        System.out.println("this is Y method");
    }
    
    void show(int i)
    {
        System.out.println("this is Y int  method");
    }
}
输出:
this is Y int method
y中的show()有一个整型形参,这使得他的类型签名与没有形参的A中的show()不同.因此,不会有重写(或名称隐藏)发生.