繼承、封裝和多型是面向物件編程的重要特性,
其成員被繼承的類叫基類也稱父類,繼承其成員的類叫派生類也稱子類,
派生類隱式獲得基類的除建構式和解構式以外的所有成員,
派生類只能有一個直接基類,所以C#并不支持多重繼承,但一個基類可以有多個直接派生類,
繼承是可以傳遞的,即:
如果 ClassB 派生出 ClassC,ClassA 派生出 ClassB,則 ClassC 會繼承 ClassB 和 ClassA 中宣告的成員,這里用一例子講解:
class A
{
public void Sum(int i,int j)
{
int sum = i + j;
Console.WriteLine(“I am A ,my sum ={0}”,sum);
}
}
class B : A
{
public void Minus(int i,int j)
{
int minus = i - j;
Console.WriteLine(“I am B ,my minus ={0}”, minus);
this.Sum(3, 4);
}
}
class InheritanceTest1
{
static void Main(string[] args)
{
B b = new B();
b.Minus(3, 4);
Console.Read();
}
}
結果:I am B ,my minus=-1
I am A ,my sum = 7
試想一下,當基類Sum()方法是私有時,派生類還會繼承該方法嗎?
經過本人測驗,沒有在B類找到該方法,那么是不是它就沒有被繼承呢?其實不是的,私有成員其實已經被繼承了,
但是它們卻不可以被訪問,因為私有成員只能被宣告它們的類或結構體中才可訪問,所以看上去像是沒有被繼承,
如果我們想降低訪問基本,我們可以把基類Sum()方法定義為protected,
能夠阻止某個類被其他類繼承嗎?
答案是可以的,C#提供了一個sealed 修飾符,此修飾符會阻止其他類從該類繼承,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/254845.html
標籤:其他
