gpt4 book ai didi

c# - 在 C# 中嵌套基类

转载 作者:太空狗 更新时间:2023-10-30 00:00:36 25 4
gpt4 key购买 nike

我有 3 个类,其中两个继承自 1:

public class Employee {
private virtual double getBonus() { ... }
private virtual double getSalary() { ... }
}

public class Nepotism : Employee {
private double getBonus() { ... }
}

public class Volunteer : Employee {
private double getSalary() { ... }
}

所以问题是有时会有一个志愿者获得裙带关系奖金 - 是否有某种方法可以编写构造函数以允许覆盖/嵌套 base 类,如下所示:

Employee Bill = new Volunteer(new Nepotism());

我在想:

public class Volunteer : Employee {
private Employee _nest;
public Volunteer(Employee nest)
: base() {
_nest = nest;
// now what?
}
}

基本上我希望一些对象具有来自两个类的覆盖。

我想避免编写覆盖方法来检查嵌套类。

getSalary() {
return (nest != null) ? nest.salary : salary; // I want to avoid this if I can
}

我该怎么做?我在正确的轨道上吗?我出轨了吗?

最佳答案

您可能想考虑使用 Decorator Pattern 而不是子类化.

它提供了子类化的替代方法,当您可能需要向一个类的单个实例添加“多个”附加功能时它很有用,这正是这种情况。

关于c# - 在 C# 中嵌套基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3112958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com