繁体   English   中英

从私有类继承的公共属性用法

[英]Public properties usage when inherited from private class

我有三个具有许多公共属性的类,因此我生成了一个继承自它们的基类:

public class CommonConfig
{
   public TimeSpan Period1 { get; private set; }
   public TimeSpan Period2 { get; private set; }
   public TimeSpan Period3 { get; private set; }
};

public class Config1 : CommonConfig
{
   public long count1 {get; private set; }
}

public class Config2 : CommonConfig
{
   public long count2 {get; private set; }
}

我不确定是否要使CommonConfig public 是否可以将其设为private但仍然可以进行如下所示的使用。

Config1 c1;
TimeSpan ts1 = c1.Period1;

您不能将类private ,对于非嵌套类, internal是最严格的修饰符。

同样,您不能访问对后代类的限制要比对父类的限制少,因此必须对CommonConfig坚持使用public

不,您不能,因为要能够访问该类的属性,您需要将其指定为public ,并且不能将private类指定为public

Config1 c1;
TimeSpan  ts1 = c1.Period1; // THIS PROPERTY HS TO BE PUBLIC 

如果你

//MISMATCH BETWEEN CLASS AND ITS PROPERTIES ACCESS MODIFIERS
private class CommonConfig {
    public TimeSpan Period1 { get; private set; }
    public TimeSpan Period2 { get; private set; }
    public TimeSpan Period3 { get; private set; }

}

甚至更多,您将得到编译器错误:

命名空间中定义的元素不能显式声明为私有,受保护或受保护的内部

在“顶级”级别(在命名空间级别)定义类时,必须将其声明为public 如果要隐藏它,则必须在另一个类中声明该类

否,您不能将其设为私有。 您不能使用具有公共财产的私人班级。 您必须指定公共课程

如果您的目标是防止直接使用CommonConfig类,则可以将CommonConfigCommonConfigabstract类, CommonConfig其标记为abstract属性(根据需要)。 这样,尽管该类是可见的,但使用它的唯一方法是通过Config1Config2

详情请参阅

怎么样

public class CommonConfig
{
    public TimeSpan Period1 {get; protected set;}
{

您还可以根据需要保护整个属性...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM