C# Multiple Interface Inheritance does not allow public access modifier with same name -
so has me perplexed.
suppose 2 interfaces.
public interface { void foo(); } public interface b { void foo(); } both of interfaces have function foo, have class provides explicit implementation:
public class alpha : a, b { // why can't put access modifier here? // how able hide derived class void a.foo() { console.writeline("a"); } void b.foo() { console.writeline("b"); } } and class derived alpha
public class beta : alpha { } how make foo private or protected since alpha doesn't allow access modifiers on explicit imlementation, can stop calling:
var = new beta(); (be b).foo(); edit
how come when don't explicitly provide implementation can provide access modifier?
public class alpha : a, b { //why compile? public void foo() { console.writeline("both"); } }
since interface a public, class implements a must make methods of a publicly accessible, either implicitly (through public methods) or explicitly. explicit implementations "sort-of" private since can accessed through interface.
in short, there no way "hide" foo - class implements both a , b methods must me made accessible through means.
this true if had one interface - having multiple interfaces method name collision forces make implementations explicit. if had 1 interface, foo either have public or explicit.
Comments
Post a Comment