2017-01-12 77 views
0

我以爲它會調用派生類函數,因爲教室將給其自身功能的重要性,但它在調用基類的功能,請大家指正...請指正與OOP繼承

class Baseclass 
{ 
    public void fun() 
    { 
    Console.Write("Base class" + " "); 
    } 
} 
class Derived1 : Baseclass 
{ 
    new void fun() 
    { 
    Console.Write("Derived1 class" + " "); 
    } 
} 
class Derived2 : Derived1 
{ 
    new void fun() 
    { 
    Console.Write("Derived2 class" + " "); 
    } 
} 
class test 
{ 
    static void Main(string[] args) 
    { 
    Derived2 d = new Derived2(); 
    d.fun(); 
    } 
} 
+0

你可能要一個語言標記添加到您的問題:) – geisterfurz007

+0

@ geisterfurz007 C# – suri

回答

1

的基類方法被調用,因爲只有基類方法是可訪問

爲什麼其他方法不可訪問?讓我們來看看該方法Derived2

new void fun() 
{ 
    Console.Write("Derived2 class" + " "); 
} 

什麼是它的訪問修飾符?沒有,所以它默認爲private。這意味着您不能從test類訪問此方法!

要使其工作,只需添加一個public修改器:

new public void fun() 
{ 
    Console.Write("Derived2 class" + " "); 
}