public static void fn_PublicDerived() { PublicBase.fn_PublicBase(); //YES, becuase this is 'public' //PrivateBase.fn_PrivateBase(); //No, becuase this is 'private' ProtectedBase.fn_ProtectedBase(); //YES, becuase this is 'protected' //InternalBase.fn_InternalBase(); //No, becuase this is 'internal' ProInternalBase.fn_ProInternalBase(); //YES, becuase this is 'protected internal' }
//TIP 2:This class is NOT in same class 'Base' but in the same assembly so only protected is NOT accessible rest all are accessible. public void fn_Base_Sibling() { PublicBase.fn_PublicBase(); //PrivateBase.fn_PrivateBase(); //ERROR:Accesibility of 'protected' ProtectedBase.fn_ProtectedBase(); //protected is accessible because Base_Sibling inherit class 'Base'. you can not access it via Base.ProtectedBase InternalBase.fn_InternalBase(); ProInternalBase.fn_ProInternalBase(); }
public static void fn_Base_Inside() { //All methods are easily accessible.Does not consider a modified indeed. PublicBase.fn_PublicBase(); PrivateBase.fn_PrivateBase(); ProtectedBase.fn_ProtectedBase(); InternalBase.fn_InternalBase(); ProInternalBase.fn_ProInternalBase(); }
public void accessProtected() { string s = virtualMethod(); if (s != "ProtectedBase") { throw new Exception("Failed"); } Klass k = instanceMethod(new Klass("xyz")); if (k.getName() != "xyz") { throw new Exception("Failed"); } k = instanceOverloaded(new Klass("xyz")); if (k.getName() != "xyz") { throw new Exception("Failed"); } k = instanceOverloaded(new Klass("xyz"), "abc"); if (k.getName() != "abc") { throw new Exception("Failed"); } k = ProtectedBase.staticMethod(new Klass("abc")); if (k.getName() != "abc") { throw new Exception("Failed"); } k = ProtectedBase.staticOverloaded(new Klass("xyz")); if (k.getName() != "xyz") { throw new Exception("Failed"); } k = ProtectedBase.staticOverloaded(new Klass("xyz"), "abc"); if (k.getName() != "abc") { throw new Exception("Failed"); } instanceMemberVariable = 30; int i = instanceMemberVariable; if (i != 30) { throw new Exception("Failed"); } staticMemberVariable = 40; i = staticMemberVariable; if (i != 40) { throw new Exception("Failed"); } i = staticConstMemberVariable; if (i != 20) { throw new Exception("Failed"); } anEnum = ProtectedBase.AnEnum.EnumVal1; ProtectedBase.AnEnum ae = anEnum; if (ae != ProtectedBase.AnEnum.EnumVal1) { throw new Exception("Failed"); } }