子类重写父类的方法后可以实现多态,重写时形参必须和父类的形参相同。如果不同,那么就不算重写,对子类来说,该方法属于重载。如下面的equals方法:
package bzq12_29;
public class EqualsTest
{
public static void main(String[] args)
{
Object o = new Cat("小花", 3);
Cat o1 = new Cat("小花", 3);
System.out.println(o.equals(o1));
}
}
class Cat
{
private String name;
private int age;
public Cat(String name, int age)
{
this.name = name;
this.age= age;
}
public boolean equals(Cat c)
{ http://www.tanhuanyao.com http:// tanhuanyao.com http://www.bianshayao.com/ http://bianshayao.com/
Cat otherCat = (Cat)c;
return name.equals(otherCat.name) && age == otherCat.age;
}
}
由于Object的equals方法参数是Object,这里若在Cat类里写成Cat,那么对于Cat类来说就有两个重载的equals方法,一个是继承自父类的,一个是自己定义的,因为它们的形参不同。此时,用Object类对象引用Cat类对象不能实现多态,上面程序输出false.