类继承
通过继承可以定义一个新类,新类纳入一个已经声明的类并进行扩展。
-
可以使用一个已经存在的类作为新类的基础。已存在的类称为基类(base class),新类称
为派生类(derived class)。派生类成员的组成如下: -
本身声明中的成员;
-
基类的成员。
-
要声明一个派生类,需要在类名后加入基类规格说明。基类规格说明由冒号和用作基类
的类名称组成。派生类直接继承自列出的基类。 -
派生类扩展它的基类,因为它包含了基类的成员,还有它本身声明中的新增功能。
-
派生类不能删除它所继承的任何成员。
例如,下面展示了名为0therC1ass的类的声明,它继承自名为SomeClass的类:
图8-1展示了每个类的实例。在左边,类SomeClass有一个字段和一个方法。在右边,类0therClass继承SomeClass,并包含了一个新增的字段和一个新增的方法。
访问继承的成员
继承的成员可以被访问,就像它们是派生类自己声明的一样(继承的构造函数有些不同,本
章稍后会阐述)。例如,下面的代码声明了类someClass和OtherClass,如图8-1所示。这段代码
显示OhterClass的所有4个成员都能被无缝地访问,无论它们是在基类中声明的还是在派生类
中声明的。
- Main创建派生类OtherClass的一个对象。
- Main中接下来的两行调用基类中的method1,先是使用基类的Field1,然后是派生类的
Field2。 - Main中后续的两行调用派生类中的Method2,再次先使用基类的Field1,然后是派生类的
Field2。
class SomeClass //基类
{public string Field1="base class field";public void Method1(string value){Console.WriteLine($"Base class -- Method1: {value}");}
}class OtherClass:SomeClass //派生类
{public string Field2="derived class field";public void Method2(string value){Console.WriteLine($"Derived class -- Method2: {value}");}
}class Program
{static void Main(){OtherClass oc=new OtherClass();oc.Method1(oc.Field1); //以基类字段为参数的基类方法oc.Method1(oc.Field2); //以派生字段为参数的基类方法oc.Method2(oc.Field1); //以基类字段为参数的派生方法oc.Method2(oc.Field2); //以派生字段为参数的基类方法}
}