【问题标题】:base and derived classes基类和派生类
【发布时间】:2012-11-24 13:25:36
【问题描述】:

如果我有一个可以处理所有常见属性的 Person 类

Person.cs

public class Person
{
   public FirstAndLastName {get; set;}
   public Health Health {get; set;}
   public Personality Personality {get; set;}
}

现在我需要 Player 对象,然后需要不同类型的球员(soccerPlayer、bballplayer 等)。由于球员是一个人,我可以使用这种方法

Player.cs
public class Player:Person
{
   public Sport Sport {get; set;}
}

现在我想实现一些基于运动的球员独特属性,例如:在篮球场上,或在足球(足球)中截击。你有照片。

Basketball.cs
public class Basketball:Player
{
   public int AlleyUpLevel {get; set;}
}

问题:这是创建基类和派生类的正确方法吗,我的篮球运动员是否可以访问 Person 类中定义的所有属性? 谢谢

【问题讨论】:

    标签: c#


    【解决方案1】:

    这是创建基类和派生类的正确方法。因为您的类Basketball 继承自Player,后者继承自PersonBasketball 确实可以访问Person 中标记为publicprotected 的所有内容。任何标记为private 的东西都不能被继承类访问。还要记住,在许多构造(例如字段和方法)的情况下,缺少访问修饰符将默认为 private 访问级别。

    【讨论】:

      【解决方案2】:

      由于您的属性都是 public任何人,而不仅仅是那些从 Person 派生的,都可以获取和设置属性的值。

      您可以考虑将 setter 设为 privateprotected,如

      public Personality Personality { get; protected set; }
      

      关键字protected 的意思是“只能从包含类和从包含类派生的类访问”。另一方面,private 表示“只能从包含的类/结构访问”。

      【讨论】:

        猜你喜欢
        • 2016-10-17
        • 1970-01-01
        • 2017-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多