Sri*_*m M 5 c# oop inheritance
我们有一个基类A,它由6个公共方法组成:
public class A
{
public void method1()
{
// Implementation
}
public void method2()
{
// Implementation
}
.
.
.
.
public void method6()
{
// Implementation
}
}
Run Code Online (Sandbox Code Playgroud)
我们有两个继承自A的子类B和C.如何实现它,使B类只能访问method1(),method2(),method3(),而C类可以访问method4(), method5(),method6()?
cae*_*say 15
你不能阻止使用公共类A
方法,但你可以通过正确使用接口来隐藏它们.
interface IAOne
{
void method1();
void method2();
void method3();
}
interface IATwo
{
void method4();
void method5();
void method6();
}
class A : IAOne, IATwo
{
void method1() { }
void method2() { }
void method3() { }
void method4() { }
void method5() { }
void method6() { }
}
Run Code Online (Sandbox Code Playgroud)
所以现在你有了B
一个永远不需要了解A
或关于A
方法的课程.它只知道IAOne
界面.B现在也可以重新公开任何方法(甚至重新实现接口)并将其实现委托给A
.
class B : IAOne
{
private IAOne _a;
public B(IAOne a) { _a = a; }
void method1() { _a.method1(); }
void method2() { _a.method2(); }
void method3() { _a.method3(); }
}
Run Code Online (Sandbox Code Playgroud)