PIC*_*ain 11 c# methods abstract-class
我有一个标记为抽象的基类.是否有可能使该基类中的方法仅对继承基类的其他类可见?
假设我的Class1是我的基类,并标记为抽象.Class2继承Class1并可以调用它的所有公共方法.我希望Class3创建一个Class2实例,但不能调用Class1的某些方法.我尝试将这些方法标记为抽象,但是当Class2尝试使用它们时我得到了一个错误.错误是:"...无法声明正文,因为它被标记为抽象"
Geo*_*ker 18
public abstract class Class1
{
protected abstract void Method1();
public abstract void Method2();
}
public class Class2 : Class1
{
protected override void Method1()
{
//Class3 cannot call this.
}
public override void Method2()
{
//class 3 can call this.
}
}
public class Class3
{
public void Method()
{
Class2 c2 = new Class2();
c2.Method1(); //Won't work
c2.Method2(); //will work
}
}
Run Code Online (Sandbox Code Playgroud)
为什么不申报方法protected?
听起来你正在寻找protected关键字.这限制了标记的成员,protected仅用于从该类型派生的声明类型.
abstract class Class1 {
protected void Method1() {
...
}
}
class Class2 : Class1 {
public void Method2() {
Method1(); // Legal
}
}
class Class3 {
public void Example() {
Class2 local = new Class2();
local.Method2(); // Legal
local.Method1(); // Illegal since Method1 is protected
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10405 次 |
| 最近记录: |