Когда дочерние классы наследуются от родительского класса, есть ли способ использовать разные типы данных для унаследованного поля, чтобы добавить больше функциональности к полю в разных дочерних классах? А затем использовать эти дочерние классы как один единственный тип данных, который можно использовать в качестве параметров в функциях?
Мне нужно создать два объекта, которые имеют некоторые сходства, но достаточно разные, чтобы гарантировать наличие разных классов. Поэтому я думаю, что для них подойдет базовый класс. У меня есть два подпорки, созданные в базовом классе 'ParentBase', которые содержат общие вещи для использования дочерними классами, и дочерние классы должны добавить дополнительную функциональность к этим разделяемым реквизитам.
Например, поле "Настройки" из ParentBase должны быть расширены в классах Parent1 и Parent2 для их собственных уникальных потребностей. Мне кажется, что мне нужно создать новые типы данных для расширения поля «Настройки» для классов Parent1 и Parent2.
class ParentBase
{
public ChildA Settings { get; set; }
public ChildX MoreSettings { get; set; }
// lots of shared props here that won't be extended in inheriting classes
public void SomeFunction()
{
// The inheriting class's Settings and MoreSettings props should be available to access here
// even though their data types are different to the base class's Settings and MoreSettings
// data types
}
}
class Parent1 : ParentBase
{
public ChildB Settings { get; set; }
public ChildY MoreSettings { get; set; }
}
class Parent2 : ParentBase
{
public ChildC Settings { get; set; }
public ChildZ MoreSettings { get; set; }
}
class ChildA { // base props and methods in here }
class ChildB : ChildA { // Parent1 specific functionality }
class ChildC : ChildA { // Parent2 specific functionality }
class ChildX { // base props and methods in here }
class ChildY : ChildX { // Parent1 specific functionality }
class ChildZ : ChildX { // Parent2 specific functionality }
Мне также нужно создать функции вне базового класса, которые будут принимать объекты Parent1 или Parent2. в качестве параметров. Например:
public void Calculate(SomeSharedType Parent1/Parent2 instance)
{
// need to access the Settings and MoreSettings properties here, and the base class's Setting should suffice,
// although it would be nice to access the inheriting class's Settings and MoreSettings properties
}
Есть ли способ для меня достичь этого с помощью наследования или интерфейсов?