Diese Frage scheint seltsam, aber ich bin in einem der Interviews kürzlich auf diese Frage gestoßen.Gibt es eine Möglichkeit, die Methoden teilweise in untergeordneten Klassen zu verbergen?
Ich wurde gefragt, gibt es einen Weg in C#, um die Methoden teilweise in einer ererbten Kindklasse zu verstecken ?. Angenommen, die Basisklasse A, exposed 4 Methoden. Klasse B implementiert A und hat nur Zugriff auf die ersten 2 Methoden und Klasse C implementiert. A hat nur Zugriff auf die letzten 2 Methoden.
Ich weiß, dass wir auf diese Weise tun können
public interface IFirstOne
{
void method1();
void method2();
}
public interface ISecondOne
{
void method3();
void method4();
}
class baseClass : IFirstOne, ISecondOne
{
#region IFirstOne Members
public void method1()
{
throw new NotImplementedException();
}
public void method2()
{
throw new NotImplementedException();
}
#endregion
#region ISecondOne Members
public void method3()
{
throw new NotImplementedException();
}
public void method4()
{
throw new NotImplementedException();
}
#endregion
}
class firstChild<T> where T : IFirstOne, new()
{
public void DoTest()
{
T objt = new T();
objt.method1();
objt.method2();
}
}
class secondChild<T> where T : ISecondOne, new()
{
public void DoTest()
{
T objt = new T();
objt.method3();
objt.method4();
}
}
Aber was wollten sie ist anders. Sie wollten diese Klassen verbergen, indem sie von Basisklassen erbten. so etwas wie dieses
class baseClass : IFirstOne, ISecondOne
{
#region IFirstOne Members
baseClass()
{
}
public void method1()
{
throw new NotImplementedException();
}
public void method2()
{
throw new NotImplementedException();
}
#endregion
#region ISecondOne Members
public void method3()
{
throw new NotImplementedException();
}
public void method4()
{
throw new NotImplementedException();
}
#endregion
}
class firstChild : baseClass.IFirstOne //I know this syntax is weird, but something similar in the functionality
{
public void DoTest()
{
method1();
method2();
}
}
class secondChild : baseClass.ISecondOne
{
public void DoTest()
{
method3();
method4();
}
}
gibt es eine Möglichkeit in C# wir so etwas wie dies erreichen können ...
@thecoop, ja, wir können das machen .., aber das Problem ist, dass die Methoden versteckt werden müssen, wenn die Basisklasse selbst erben wird ... – RameshVel