如何根据不同的参数创建不同类的不同对象?

时间:2017-05-31 11:44:49

标签: c# object polymorphism

假设我有一个从Fruit Class扩展的Apple类

我也有从Orange课程延伸的Orange课程

这两个类都有两个不同的构造函数

Apple拥有Apple(尺寸,颜色,味道,重量); 橙色有橙色(大小,半径,直径);

每个对象都有自己独特的方法我必须调用

如何创建不同的实例,JUST BY创建水果类?根据不同的参数?像

Fruit a = new Fruit(int size, int colour, String taste, int weight); To create apple
Fruit a = new Fruit(int size, int radius, int diameter); To create orange

我该怎么办?请帮忙

更新:

我知道我必须使用工厂,但我没有进行过培训,如何在C#中使用Factory来实现上述目标

因为我的老板说他只希望用户在没有关注水果名称的情况下将参数输入到水果类中。他告诉我一些叫java的工厂,我该怎么做?

2 个答案:

答案 0 :(得分:1)

使用派生类中的构造函数:

Fruit a = new Apple(size, colour, taste, weight);

根据您更新的问题,如果您使用工厂,您的工厂将返回Fruit类型,因此我不会仅仅使用构造函数重载看到很多好处:

public class Fruit
{
     public Fruit(int size, int colour, string taste, int weight) { }
     public Fruit(int size, int radius, int diameter) { }
}

答案 1 :(得分:0)

你可以试试这个:

public class Fruit
{
    public static Fruit CreateFruit(string v1, string v2)
    {
        return new Apple(v1, v2);
    }

    public static Fruit CreateFruit(string v1, int v2, int v3)
    {
        return new Orange(v1, v2, v3);
    }
}

public class Apple : Fruit
{
    string var1 { get; set; }
    string var2 { get; set; }

    public Apple(string v1, string v2)
    {
        this.var1 = v1;
        this.var2 = v2;
    }
}


public class Orange : Fruit
{
    string var1 { get; set; }
    int var2 { get; set; }
    int var3 { get; set; }

    public Orange(string v1, int v2, int v3)
    {
        this.var1 = v1;
        this.var2 = v2;
        this.var3 = v3;
    }
}