我正在构建一些带继承的类,使用派生类方法,我在应用程序中遇到了保护问题。以下是其中一个获取错误的类的源代码。
CODE:
class Cone : Circle
{
private double height; // Data members
public Cone() : base() // Default constructor with explicit call
{ // to base (Circle) default constructor
this.Label = "Unlabeled Cone";
this.height = 0.0;
}
public Cone(Point centerValue, double radiusValue, double heightValue):
base(centerValue, radiusValue) // Initializing constructor with explicit
{ // call to base (Circle) initializing construtor
this.Label = "Unlabeled Cone";
this.Height = heightValue;
}
public Cone(Point centerValue, double radiusValue, double heightValue, string labelValue):
base(centerValue, radiusValue, labelValue) // Initializing constructor with explicit
{ // call to base (Circle) initializing construtor
this.Height = heightValue;
}
public Cone(Cone sourceCone) // Copy constructor
{
this.Copy(sourceCone);
}
public double Height // Define read/write Height property
{
get
{
return this.height;
}
set
{
if (value >= 0.0)
this.height = value;
else
{
Console.WriteLine("Runtime error: {0} can not be assigned to a Height property\n", value);
ConsoleApp.Exit();
}
}
}
以下是它的派生类:
public class Circle : object
{
private Point center; // Data member
private double radius; // Data member
private string label; // Data member
public Circle()
{
this.center = new Point();
this.radius = 0.0;
this.label = "Unlabeled Circle";
}
public Circle(Point centerValue, double radiusValue)
{
this.center = new Point(centerValue);
this.Radius = radiusValue;
this.label = "Unlabeled Circle";
}
public Circle(Point centerValue, double radiusValue, string labelValue)
{
this.center = new Point(centerValue);
this.Radius = radiusValue;
this.Label = labelValue;
}
public Circle(Circle sourceCircle) // Copy constructor
{
this.center = new Point();
this.Copy(sourceCircle);
}
public Point Center // Define read/write Center property
{
get
{
return this.center;
}
set
{
this.center = value.Clone();
}
}
这些类在数量,区域和更多内容中添加的时间更长,但在我的控制台应用程序中,我一直认为由于其保护级别而无法访问Cone。我很难看到某些东西是私密的,这使得它无法从控制台应用程序访问。如果您想查看完整的类代码,请使用pastebin ... sourcecode
答案 0 :(得分:0)
您的班级声明没有辅助功能级别:
class Cone : Circle
如果您未提供访问级别,则默认为可访问级别最低(限制最多)。使用:
public class Cone
答案 1 :(得分:0)
如果锥体类位于不同的命名空间或内部,如果它们位于同一命名空间中,则将其声明为public。
我建议你将它们放在一个单独的文件夹中(因为它们都是形状)并在你的代码中导入使用它的特定命名空间。