1.实现继承:表示一个类型派生于另一个基类型,他拥有基类型的所有成员变量和方法,因此在需要给现有的类型增肌新的功能后者写一些共享性的代码时很有用。
接口继承:只继承了函数的签名没有集成其他的方法的实现
2.C#不支持多重继承,但是允许派生自多个接口
3,把一个基类函数声明为virtual,可以在任何派生类中重写这个方法
4,隐藏方法,基类和继承类中有同名的方法,实现不同的功能,在调用时会出现问题,采用new这个关键字来隐藏掉基类中的方法
public class A
{
public void Print()
{
Console.WriteLine("A");
}
}
public class B : A
{
public new void Print()
{
Console.WriteLine("B");
}
}
class Program
{
static void Main(string[] args)
{
B b=new B();
b.Print();
Console.ReadKey();
}
}
5,C#有一种特殊的语法调用基类中的方法
6.抽象类和抽象函数
抽象类不能实例化,抽象函数不能直接实现,注意修饰符不能为private,private是没有意义的
public abstract class A
{
public abstract void Print();
protected abstract void Print1();
}
public class B : A
{
public override void Print()
{
throw new NotImplementedException();
}
protected override void Print1()
{
throw new NotImplementedException();
}
}
7,密封类和密封方法
C#允许把类声明为sealed对于类表示类不能被继承,对于方法表示不能被重写,继承B的类不能重写Print方法
public abstract class A
{
public abstract void Print();
}
public class B : A
{
public sealed override void Print()
{
throw new NotImplementedException();
}
}
public abstract class A
{
public abstract void Print();
}
public class C : A
{
public override void Print()
{
throw new NotImplementedException();
}
}
public class B : A
{
public sealed override void Print()
{
throw new NotImplementedException();
}
}
public class D : C
{
public override void Print()
{
//base.Print();
}
}
public class E : B
{
}
8.派生类的构造函数
9.修饰符