c# 4.0 - C# Calling an overriden method within the superclass -
hey there. picked c# learn game programming xna, have experience in java.
here's code, in essence:
public class { public rectangle getrectangle() { return [some rectangle]; } public bool collision(a other) { rectangle rect1 = getrectangle(); rectangle rect2 = other.getrectangle(); return rect1.intersects(rect2); } } public class b : { public rectangle getrectangle() { return [some other rectangle]; } }
the problem arises when try this:
a a; b b; if(a.collision(b)) ...
where b's version of rectangle never called, far can tell. tried solution 1 suggested here message "b.getrectangle() hides inherited member a.getrectangle(). use new keyword if intended."
i appreciate in advance receive. i'm thinking past java experience getting in way of understanding how c# different. guess if knows of link explains differences between c# , java or how c# works in respect suffice.
cheers.
unlike java, methods in c# not marked virtual default. current code doing hiding getrectangle
method: there implicit new
modifier on declaration of method in derived class.
you need explicitly include virtual
modifier in method-declaration in base class:
public virtual rectangle getrectangle() { ... }
and override
in derived class with:
public override rectangle getrectangle() { ... }
Comments
Post a Comment