我試圖多態性的例子,但我在我的代碼以下錯誤:C#多態性錯誤:無法訪問由於其保護級別
public class CPolygon
{
CPolygon() {}
public int width {get; set;}
public int height {get; set;}
public virtual int area(){ return 0; }
}
class CRectangle: CPolygon
{
public CRectangle() {} //'Lista.CPolygon.CPolygon()' is inaccessible due to its protection level
public override int area()
{
return (width * height);
}
}
class CTriangle: CPolygon //'Lista.CPolygon.CPolygon()' is inaccessible due to its protection level
{
CTriangle() {}
public override int area()
{
return (width * height/2);
}
}
static void Main(string[] args)
{
CTriangle triangle= new CTriangle();
triangle.height=5;
triangle.width=6;
int area1 = triangle.area();
}
我得到的錯誤派生類的構造函數「是人跡罕至因到其保護級別「。我不知道爲什麼。我做了隱式派生構造函數的另一個例子,它的工作。
abstract class Shape
{
public Shape(string name = "NoName")
{ PetName = name; }
public string PetName { get; set; }
public abstract void Draw();
}
class Circle : Shape
{
public Circle() {}
public Circle(string name) : base(name) {}
public override void Draw()
{
Console.WriteLine("Drawing {0} the Circle", PetName);
}
}
class Hexagon : Shape
{
public Hexagon() {}
public Hexagon(string name) : base(name) {}
public override void Draw()
{
Console.WriteLine("Drawing {0} the Hexagon", PetName);
}
}
這個工作和幾乎相同的代碼。構造函數「Circle()」,「Hexagon()」這次不需要任何保護級別。有任何想法嗎?
.Net類名不應以'C'開頭 – SLaks
請在問題中正確地格式化您的代碼。用戶適當的意圖。 –
重複:http://stackoverflow.com/questions/5326057/why-am-i-getting-an-inaccessible-due-to-protection-level-error – kmote