【问题标题】:Creating chlid class object in parent class在父类中创建子类对象
【发布时间】:2015-11-17 16:12:52
【问题描述】:

我有两个类,父类和子类。我真正想找到的,我可以在父类中创建一个子类的对象。我累了,但是编译器抛出异常是我的代码。

   class b  { 
        private c obj;
        public b()
        {
            obj=new c();
        }
        public void show()
        {

            obj.show();
        }
        }
        class c : b{ 
        public void show()
        {
        Console.WriteLine("working ");
        }
        }
  b object=new b();
  b.show();

有没有办法在父类中创建子类对象。

【问题讨论】:

  • 它会抛出什么“异常”?
  • 进程因意外错误而终止
  • 编译器不会抛出异常——它们会报告编译错误。您当前的代码无法编译,因为您不能使用 object 作为标识符开始。尚不清楚这是否是您的 实际 代码。如果您展示一个简短但完整的示例(包括编译错误),同时遵循正常的 C# 命名约定并执行适当的源代码格式以使我们易于阅读,这将有所帮助。

标签: c# oop object inheritance subclass


【解决方案1】:

你可以试试这个:

class b  { 
    private c obj;
    public b()
    {

    }
    public void show(c o)
    {
        obj = o;
        obj.show();
    }
    }
    class c : b{ 
    public void show()
    {
    Console.WriteLine("working ");
    }
    }

    class Program
    {
        static void Main(string[] args)
        {
            c o=new c();
            b bo = new b();
            bo.show(o);
            o.show();
            Console.ReadKey();

        }
    }

【讨论】:

  • 严格来说,这并不能回答问题。它不会在父类中创建子对象,也不会说是否可能。
  • 我在运行时传递子类对象并设置它。然后您在那时创建对象。在我看来,没有大的区别。
【解决方案2】:

您可以从父类创建子对象,但不能在构造函数中创建。如果您这样做,子对象(也是父对象)将创建另一个子对象,该子对象将创建另一个子对象,依此类推。你做了一个无限循环。

您可以从父类中的方法创建子对象。示例:

public class Parent {

  private Child _child;

  public void CreateChild() {
    _child = new Child();
  }

  public void Show() {
    _child.Show();
  }

}

public class Child : Parent {

  public void Show() {
    Console.WriteLine("Working");
  }

}

Parent p = new Parent();
p.CreateChild();
p.Show();

【讨论】:

    猜你喜欢
    • 2013-12-06
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2014-04-29
    相关资源
    最近更新 更多