【问题标题】:How to invoke, access public members of base class in derived class如何在派生类中调用、访问基类的公共成员
【发布时间】:2013-05-30 23:23:03
【问题描述】:

我有 3 个具体的类,分别命名为 ClassA(即内置 System.Web.UI.Page 类)、ClassB 和 ClassC(参见下面的代码)。 ClassC 是 ClassB 的派生类,而 ClassB 又是 ClassA 的派生类。 ClassB 有自己的成员。我的问题是 ClassC 如何调用或访问 ClassB 的成员(公共属性、公共方法)? ClassC 的源代码中如何解决类的范围以避免歧义?提前致谢。

一些代码:

// ClassA = System.Web.UI.Page
public class System.Web.UI.Page {
    // built-in class
}

public class ClassB : System.Web.UI.Page {
   // some own properties
   public bool IsUserLoginNameVisible { get; set; }

   // some own methods
   public void GetLoginUsers()
   {
   }
}

public class ClassC : ClassB {
   public int NumberOfLoginUsers()
   {
       // how can I invoke method "GetLoginUsers()" from ClassB in here?
       // base.GetLoginUsers() ???
   }

   public bool CheckToSeeUserLoginNameVisible()
   {
      // how can I access property "IsUserLoginNameVisible" from ClassB in here?
      // base.IsUserLoginNameVisible ???
   }
}

【问题讨论】:

  • 你试过带和不带base.前缀吗?有区别吗?
  • 另外,您的 GetLoginUsers 属性声明将无法编译。要么给它一个非 void 类型,要么让它成为一个方法——这可能是你的意图。
  • @Igor。感谢您的回复。我更新了那个方法定义。

标签: c#


【解决方案1】:

派生类从其基类继承所有可访问的成员。

您可以像调用任何其他实例方法一样调用它们。

base 关键字将强制调用解析为(立即)基类的定义,即使您的类隐藏了它,或者您的或派生类覆盖了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 2013-10-08
    • 2018-04-17
    • 2018-05-07
    • 2020-08-27
    • 2012-09-16
    • 2012-09-17
    相关资源
    最近更新 更多