none
对类和接口概念的理解困惑?

    问题

  • 请教各位老师:

        本人的基础较差,自学中。。。。

        在学习过程中遇到一些基础性的问题,想请教大家:

              interface IAnimal
        {
           void Cry();
        }
        class Dog:IAnimal
        {
          public void Cry()
          {
            Console.WriteLine("dog...");
          }
         }

               class Fish:IAnimal

               {

                      public void Cry()

                      {

                              Console.WriteLine("Fish...");      

                       }

               }

      //接口的隐式实现

    IAnimal Ia=new Dog();

    IAnimal Ian=new Fish();

    //这样通过接口就分别实现了类Dog、Fish,可以这样理解吗???

    在OOP的原则中,为了体现松耦合的原则,通过实现了该接口的类来使用接口中的方法,这样是不是也体现了多态和可复用\扩展的编程思想???


    • 已编辑 午夜流星 2016年12月15日 3:18 内容有错误
    2016年12月14日 2:15

答案

  • 这个定义interface IAnimal
        {
           void Dog();
        }

    应该是

    interface IAnimal
        {
           void Cry();
        }

    是体现了松耦合的原则, new Dog或new Fish还可以演化成工厂方法,以更加灵活的方法创建对象。

    //IAnimal Ia=new Dog();

    //IAnimal Ian=new Fish();

    IAnimal Ia=ObjectFactory.Create(Animal.Dog);

    IAnimal Ian=ObjectFactory.Create(Animal.Fish);

    enum Animal

    {

       Dog,

       Fish

    }

    这句话“这样通过接口就分别实现了类Dog、Fish”,我觉得说成“Dog,Fish都实现了接口IAnimal”,是类实现接口。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年12月14日 5:55

全部回复

  • 这个定义interface IAnimal
        {
           void Dog();
        }

    应该是

    interface IAnimal
        {
           void Cry();
        }

    是体现了松耦合的原则, new Dog或new Fish还可以演化成工厂方法,以更加灵活的方法创建对象。

    //IAnimal Ia=new Dog();

    //IAnimal Ian=new Fish();

    IAnimal Ia=ObjectFactory.Create(Animal.Dog);

    IAnimal Ian=ObjectFactory.Create(Animal.Fish);

    enum Animal

    {

       Dog,

       Fish

    }

    这句话“这样通过接口就分别实现了类Dog、Fish”,我觉得说成“Dog,Fish都实现了接口IAnimal”,是类实现接口。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年12月14日 5:55
  • 谢谢您的热心回复!也帮我更正了错错误的地方,是写错了!
    2016年12月15日 3:17