1.类同时只能继承一个基类。
2.virtual
关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。 例如,此方法可被任何继承它的类重写。
默认情况下,方法是非虚拟的。 不能重写非虚方法。
virtual
修饰符不能与 static
、abstract, private
或 override
修饰符一起使用。
virtual的用法
public class test
{
protected string a;
protected string b="abc";
public virtual string A
{
get { return a; }
set { a = value; }
}
public string B
{
get { return b; }
set { b = value; }
}
public virtual string returnStr(string Str)
{
return Str;
}
}
public class testchild:test
{
public override string A
{
get { return a; }
set { a = value; }
}
public override string returnStr(string Str)
{
return Str;
}
public int returnInt(int Str)
{
return Str;
}
}
virtual修饰的方法叫虚方法,没有被virtual修饰的方法叫是方法
虚方法可以在它的派生类中用overrid重写,虚方法的重写不是必须的;重写会改变父类方法的功能
虚方法和实方法都可以在派生类中用new修饰的同名方法覆盖,覆盖不会改变父类方法的功能
public class testchild:test
{
public new string A
{
get { return a; }
set { a = value; }
}
public new string returnStr(string Str)
{
return Str;
}
public int returnInt(int Str)
{
return Str;
}
}
3.abstract抽象类
abstract class ShapesClass
{
public string getdata();//错误!抽象类中声明的函数都要用abstract来修饰
abstract public int Area();
}
class Square : ShapesClass
{
int side = 0;
public Square(int n)
{
side = n;
}
// Area method is required to avoid
// a compile-time error.
public override int Area()
{
return side * side;
}
static void Main()
{
Square sq = new Square(12);
Console.WriteLine("Area of the square = {0}", sq.Area());
}
interface I
{
void M();
}
abstract class C : I
{
public abstract void M();
}
}
4.静态类,类的静态成员
静态方法可以被重载,但不能被重写,因为它属于类,不属于任何事例。
不能在类的静态成员中使用静态局部变量。
类中包含静态字段则要在静态构造函数中初始化。
5.接口
接口可以同时继承多个接口,接口的方法声明在类中的实现必须是public的
类可以同时继承多个接口,但类一次只能继承一个基类