方法重写:
基类方法标识virtual关键字,子类(继承类)中方法重写标识override关键字。
重写的方法必须跟基类的类型相同,如方法名称、返回和接受参数。
public class Class1
{
public virtual void show(int i)
{……}
}
public class Class2:Class1
{
public override void show(int a)
{……}
}
New方法重写:
public class Class1
{
protected virtual void show(int i)
{……}
}
public class Class2:Class1
{
public new int show(int a)
{……}
}
new声明定义自己的同名方法。返回类型、访问类型可以不同于基类的同名方法。
如果接受参数不同于基类同名方法时new关键字会多余,相当于一般重写(基类没有一样的方法,没有一样的隐藏方法)。
override重写基类方法(隐藏方法)的方法体,new重写基类同名方法(接收参数一样)。
终止继承:
终止继承标识sealed。以下代码编译出错,Class2无法继承封闭类Class1
public sealed class Class1
{
public virtual void show(int i)
{……}
}
//public class Class2:Class1
//{
// public override void show(int a)
// {……}
//}
调用基类构造函数:
编译器先调用基类构造函数,再调用继承类构造函数。
public class Class1
{
public Class1(int i , string j)
{……}
}
public class Class2:Class1
{
public Class2(int i,string j,object obj):base(i,j)
{……}
}