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的
類可以同時繼承多個接口,但類一次只能繼承一個基類