Pessoal do GUJ, eu achava que entendia de overriding perfeitamente ateh eu me deparar com esse cogido:
class MyParent
{
int x, y;
MyParent(int x, int y)
{
this.x = x;
this.y = y;
}
public int addMe(int x, int y) //ESTE METODO DA SUPER CLASSE AQUI...
{
return this.x + x + y + this.y;
}
public int addMe(MyParent myPar)
{
return addMe(myPar.x, myPar.y);
}
}
class MyChild extends MyParent
{
int z;
MyChild(int x, int y, int z)
{
super(x,y);
this.z = z;
}
public int addMe(int x, int y, int z)
{
return this.x + x + this.y + y + this.z + z;
}
public int addMe(MyChild myChi)
{
return addMe(myChi.x, myChi.y, myChi.z);
}
public int addMe(int x, int y) //ESTA IDENTICO A ESTE! =/ Porque roda?
{
return this.x + x + y + this.y;
}
}
public class MySomeOne
{
public static void main(String[] args)
{
MyChild myChi = new MyChild(10,20,30);
MyParent myPar = new MyParent(10, 20);
int x = myChi.addMe(10, 20, 30);
int y = myChi.addMe(myChi);
int z = myPar.addMe(myPar);
System.out.println(x + y + z);
}
}
Aguem consegue me dizer porque roda? eu estava crente que iria dar um erro de compilacao… pois os metodos estao identicos! ja que a subclasse herda da super.