none
C#中接口,抽象类,类之间的调用 RRS feed

  • 问题

  • 我有一个接口:

     public interface InterfaceTest
        {
             string aa(string name);
             string bb(string name);
             string cc(string name);
        }

    然后,定义了一个抽象类,来实现这个接口:

    abstract class ClassTest:InterfaceTest
        {
            public string aa(string name)
            {
                return name;
            }
            public string bb(string name)
            {
                return name;
            }
            public string cc(string name)
            {
                return name;
            }
        }

    然后,我有一个类,Test继承这个抽象类,这样,我就可以不用实现接口里的所有方法,只要抽象类实现就可以了,但是,Test这个类怎么调用抽象类里面的某一个方法呢?

     

    2011年4月11日 1:43

答案

  • 我已经知道怎么做了:

    例如,在上面的结构中,我在接口定义3个方法,但是,有时候我只需要实现一个,那么,我们可以定义一个抽象类来实现这个接口,如上述代码:ClassTest,但是,如果我有一个类为Test它已经继承了另外的一个抽象类,那么,这里面的三个方法也不能实现,而且,抽象类是不能被实例化的,所以,我们重新创建一个类,来继承这个抽象类(Test1),这样,我们就可以实例化Test1,从而,就可以使用接口定义的某一个方法了。

    具体代码:

    接口:

    public interface InterfaceTest
        {
             string aa(string name);
             string bb(string name);
             string cc(string name);
        }

    抽象类:

    abstract class ClassTest:InterfaceTest
        {
            public string aa(string name)
            {
                return name;
            }
            public string bb(string name)
            {
                return name;
            }
            public string cc(string name)
            {
                return name;
            }
        }

    可以实例化的类:

    class ShowTests:ClassTest
        {
         
        }

    程序的入口:

    public void run:OtherAbstract//已经继承了其它的抽象类

    {

    public void showMsg()

    {

    ShowTests tests=new ShowTests();

    //通过tests点就可以调用ClassTest里面的方法了......

    }

    }

    2011年4月11日 2:19

全部回复

  • 我已经知道怎么做了:

    例如,在上面的结构中,我在接口定义3个方法,但是,有时候我只需要实现一个,那么,我们可以定义一个抽象类来实现这个接口,如上述代码:ClassTest,但是,如果我有一个类为Test它已经继承了另外的一个抽象类,那么,这里面的三个方法也不能实现,而且,抽象类是不能被实例化的,所以,我们重新创建一个类,来继承这个抽象类(Test1),这样,我们就可以实例化Test1,从而,就可以使用接口定义的某一个方法了。

    具体代码:

    接口:

    public interface InterfaceTest
        {
             string aa(string name);
             string bb(string name);
             string cc(string name);
        }

    抽象类:

    abstract class ClassTest:InterfaceTest
        {
            public string aa(string name)
            {
                return name;
            }
            public string bb(string name)
            {
                return name;
            }
            public string cc(string name)
            {
                return name;
            }
        }

    可以实例化的类:

    class ShowTests:ClassTest
        {
         
        }

    程序的入口:

    public void run:OtherAbstract//已经继承了其它的抽象类

    {

    public void showMsg()

    {

    ShowTests tests=new ShowTests();

    //通过tests点就可以调用ClassTest里面的方法了......

    }

    }

    2011年4月11日 2:19
  • 每个类都会有自身的实例

    并且继承抽象类的成员

    这是一个问题,继承抽象类,不可以被实例化,尽管如此,抽象类实现了接口,该类已继承抽象类,不可被实例化。

    Test类没有实例,无法调用自身继承而来的抽象类成员。

     

     


    胡超
    2011年4月11日 14:57
  • 抽象类实现接口没有实例


    胡超
    2011年4月11日 15:06
  • 抽象类不被继承没有意义
    胡超
    2011年4月11日 15:07
  • 抽象类包含未实现方法

    继承成员无法实现

    没有实例


    胡超
    2011年4月11日 15:08