繁体   English   中英

将派生类分配给基类,并使用派生方法?

[英]Assigning derived class to base, and using the derived methods?

我试图将派生类分配给基类,然后使用派生类中的方法,这是我的意思的一个例子。

给定一个类Animal和派生自Animal的两个类CatDog

public class xxx{
    private Animal animal;

    public xxx(Cat c){
        animal=c
    }

    public xxx(Dog d){
        animal=d
    }
}

调用构造函数后,在这个xxx类中,我希望能够执行animal.catMethod1()如果它被分配给Catanimal.dogMethod3()如果它被分配给Dog ,这可能吗?

我认为这不是一个好的做法(不是 liskov 替换),但你可以。

(animal as Cat)?.catMethod1();
(animal as Dog)?.dogMethod3();
//By Pattern Matching
switch (animal)
{
  case Cat cat:
    cat.catMethod1()
    break;
  case Dog dog:
    dog.dogMethod3()
    break;
}

暂无
暂无

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

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