#799 – Interface Members Are Implicitly Public
March 13, 2013 3 Comments
When you declare an interface, you cannot use access modifiers on interface’s member. An interface makes a collection of members available to code that accesses a class implementing that interface. So it makes sense that the interface members are public.
public interface IBark { int BarkCount { get; set; } void Bark(string woofSound, int count); }
When you implement an interface, you must mark the interface members as public.
public class Dog : IBark { public int BarkCount { get; set; } public void Bark(string woofSound, int count) { for (int i = 1; i <= count; i++) Console.WriteLine(woofSound); } }
If you implement the interface explicitly, the members are implicitly public and you cannot mark them with access modifiers.
int IBark.BarkCount { get; set; } void IBark.Bark(string woofSound, int count) { for (int i = 1; i <= count; i++) Console.WriteLine(woofSound); }