科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件针对 Java 开发人员的 C# 编程语言(17)

针对 Java 开发人员的 C# 编程语言(17)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

针对 Java 开发人员的 C# 编程语言将类型强制转换到基类

来源:MSDN 2007年11月7日

关键字: 编程语言 C# java Linux

  • 评论
  • 分享微博
  • 分享邮件

将类型强制转换到基类

与在 Java 中一样,我们不能使用对基类的引用来访问派生类的成员和方法,即使基类引用可能包含对派生类型对象的有效引用也同样如此。

我们可以通过隐式地引用派生的类型来引用派生类:

ColorPoint clrpt = new ColorPoint();
Point pt = clrpt;

在这段代码中,基类引用 pt 包含 clrpt 引用的副本。

base 关键字

通过使用 base 关键字,我们可以访问子类中的基类成员,即使这些基类成员在超类中被重写也同样如此。例如,我们可以创建一个派生类,该类所包含的方法具有与基类中相同的签名。如果我们在此方法前加上 new 关键字,就表示这是一个属于派生类的全新方法。通过 base 关键字,我们仍然可以提供方法来访问基类中的原始方法。

例如,我们的 Point 基类有名为 invert() 的方法,它交换 x 和 y 坐标。通过使用下面这样的代码,我们可以在派生类 ColorPoint 中提供此方法的替代方法:

public new void invert()
{
  int holding = X;
  X = Y;
  Y = holding;
  screenColor = Color.Gray;
}

正如您所见,该方法交换 x 和 y,然后将点的颜色设置为灰色。通过在 ColorPoint 中创建另一个方法(例如下面的这个方法),我们可以提供对此方法的基实现的访问:

  public void baseInvert()
  {
    base.invert();
  }

然后,我们就可以通过调用 baseInvert() 方法来调用 ColorPoint 对象中的基方法。

ColorPoint clrpt = new ColorPoint();clrpt.baseInvert();

请记住,如果我们将对基类的引用赋值给 ColorPoint 的实例,然后访问它的方法,我们将获得相同的效果:

Point pt = clrpt;
pt.invert();
查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章