An interface is something like a promise. A class implementing an interface promises to have all these methods. Your class C2 is overriding the method from C1 that's all. Your two "help" methods are not two different one, they are the same. C2 promises twice to implement a methods "void help();", inherants the one from C1 and overrides it.