1。继承
继承的方法在子类后加冒号,冒号后加父类名例如:
public class A
{
 public a()
 {
   Console.WriteLine("A的构造函数");
 }
}
public class B : A
{
public b()
  {
  Console.WriteLine("B的构造函数");
  }
}
static void Main()
{
B b=new B();
}
新类(即派生类)将获取基类的所有非私有数据和行为以及新类为自己定义的所有其他数据或行为。
构造函数的调用:以上代码为例:当实例化B时,先调用A的构造函数,再调用B的构造函数,B的构造函数默认继承base()若代码为下例:
public class A
{
 public A(int i)
 {
   Console.WriteLine("A的构造函数"+i);
 }
}
public class B : A
{
public B()
  {
  Console.WriteLine("B的构造函数");
  }
}
这个例子是不正确的,当实现B的构造函数时会向上查找与B类构造函数匹配的A的构造函数B构造函数默认继承base(),但A中不存在构造函数
public A()
 {
   Console.WriteLine("A的构造函数");
 }
base()表示父类对象,this表示本类对象。
继承的子类中可以有和父类方法签名相同的方法当调用时父类方法被隐藏,若在子类方法名前加new时称为显示隐藏否则为隐式隐藏。
不允许循环继承,继承时调用只会影响子类。
方法的重写:在父类的方法前加virtual说明方法定义为虚方法,可以在子类中重写该方法,重写的是前一个virtual的方法。
2。抽象类
抽象方法不能有方法体,抽象字段属性表达形式为:get:set:不能有具体的实例,抽象类的子类中必须重写抽象类中所有的抽象成员,抽象类的构造函数与普通函数的继承一样。抽象类可以继承抽象类,在抽象子类中可以实现父抽象类的抽象方法,抽象类可以继承实例化类,密封类不能有虚成员密封类不能被继承。
3,接口
接口中有字段,属性,索引器,方法,事件,接口中所有成员都需要被实现,索引器和属性不能有get和set后的实例化语句。在接口中所有的成员都默认为public,我们自己不能改也不能添加public。一个类可以继承多个接口,继承的接口可以有两个签名相同的方法,若使用接口名+方法名的调用成为显示调用
virtual和override只能用在有实现的方法上,接口不能继承类。
4.运算符重载
使用关键字:operator例如定义+法的重载
public static Complex operator +(Complex c1, Complex c2)
Complex 为返回值的类型