【问题标题】:Typecasting to a Base Class类型转换为基类
【发布时间】:2016-03-28 02:49:20
【问题描述】:

我正在阅读 c# 的文档,但我无法理解 Typecasting to base class 这个概念。

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

您可以通过对派生类型的引用隐式引用派生类

DerivedClass derived1 = new DerivedClass();
BaseClass base1 = derived1;`

“您可以通过对派生类型的引用隐含地引用派生类(在上下文中隐含的意思)”这句话是什么意思

例如,如果派生类有一个方法说 `derived_name()'

这是否意味着我不能这样做

base1.derived_name() // invalid

【问题讨论】:

    标签: c# inheritance casting


    【解决方案1】:

    这意味着您不需要将派生对象显式转换为基类型。

    DerivedClass derived1 = new DerivedClass();
    
    // This is an implicit coversion:
    BaseClass base1 = derived1;  
    
    // This is an explicit conversion:
    DerivedClass derived2 = (DerivedClass) base1;
    

    无论您如何转换,都不能从基类型的变量调用派生类中定义的方法。要从派生类型调用方法,您需要显式转换为该类型:

    ((DerivedClass) base1).derived_name();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-19
      相关资源
      最近更新 更多