说 A 类是基类,然后你有 A 的 B 类子类(B 类:A)。然后你有C类:B。
问题是如果您在 A 类中有一个方法,C 类可以使用该方法吗?
是的,你可以,如果它被声明public
或protected
. 但不是private
。
感谢@DavidL .. 我忘了提到internal
.
来自 Visual Studio 附带的 C# 手册(此处为 2012 版)::
如果我是对的,这也是 C# 5.0 中的一个新隐藏功能:
嵌套类型可以隐藏(第 3.7.1 节)基成员。嵌套类型声明中允许使用 new 修饰符,以便可以显式表达隐藏。这个例子
using System;
class Base
{
public static void M() {
Console.WriteLine("Base.M");
}
}
class Derived: Base
{
new public class M
{
public static void F() {
Console.WriteLine("Derived.M.F");
}
}
}
class Test
{
static void Main() {
Derived.M.F();
}
}
显示了一个嵌套类 M,它隐藏了 Base 中定义的方法 M。
这取决于。
是的,当你从一个类继承时,你会得到它的所有方法,包括它从其他人那里继承的所有方法。
public class A
{
public int Id { get; set; }
protected int protectedId { get; set; }
private int privateId;
}
public class B : A
{
}
public class C : B
{
public C()
{
int temp = Id; // works
int temp1 = protectedId; // works
int temp2 = privateId; // does NOT work
}
}
和其他班级;
public void SomeMethod()
{
C c = new C();
int i = c.Id; // works
int j = c.protectedId; // does NOT work
int k = c.privateId; // does NOT work
}