[Object-oriented] : 接口

 

前言 :

接口
是在面向对象里,是个不难懂,却是很重要的东西。
笔者试着采用指标的方式,来解释接口的运作。

 

接口 :

底下是一段接口的程序代码
这个程序代码很简单,就是ClassA实作ISampleX而已

public interface ISampleX

{

    void XXX();

    void YYY();

}



public class ClassA : ISampleX

{

    public void XXX()

    {

        // ...

    }



    public void YYY()

    {

        // ...

    }



    public void ZZZ()

    {

        // ...

    }

}

 

当我们在程序内撰写如下的程序
函式AAA与函式BBB内部同样是呼叫item.XXX();
执行的结果也都相同都是执行ClassA.XXX()
但是在执行顺序上却是不同的

class Program

{

    static void Main(string[] args)

    {

        AAA(new ClassA());

        BBB(new ClassA());

    }



    public static void AAA(ClassA item)

    {

        item.XXX();

    }



    public static void BBB(ISampleX item)

    {

        item.XXX();

    }

}

 

函式AAA是参考ClassA
可以这样理解

public static void AAA(ClassA item)

{

    item.XXX();

}

[Object-oriented] : 接口

 

函式BBB是参考ISampleX
可以这样理解

public static void BBB(ISampleX item)

{

    item.XXX();

}

[Object-oriented] : 接口

 

可以看的出来当我们参考接口的时候
会在类别的外面多加一层
程序代码依照这层接口的定义,来呼叫实际的对象程序代码

 

参考 :

我们再来看下面的程序代码

public interface ISampleX

{

    void XXX();

    void YYY();

}



public class ClassA : ISampleX

{

    public void XXX()

    {

        // ...

    }



    public void YYY()

    {

        // ...

    }



    public void ZZZ()

    {

        // ...

    }

}



public class ClassB : ISampleX

{

    public void XXX()

    {

        // ...

    }



    public void YYY()

    {

        // ...

    }



    public void AAA()

    {

        // ...

    }

}

 

当我们在程序内撰写如下的程序
函式BBB是参考ISampleX,但传入的对象却分别为ClassA及ClassB。
依照前面的说明,我们可以理解
ClassA及ClassB在传入函式后,会加上一层名为ISampleX的外皮。
所以函式BBB还是可以正常的执行。

class Program

{

    static void Main(string[] args)

    {

        BBB(new ClassA());

        BBB(new ClassB());

    }



    public static void BBB(ISampleX item)

    {

        item.XXX();

    }

}

 

可以这样理解
[Object-oriented] : 接口
[Object-oriented] : 接口

 

后记 :

本篇的文章,
描述了接口的运作,希望对大家有帮助^^

 

P.S.
本篇的内容大幅度的简化了计算器结构的内容,用以传达面向对象的概念。
实际计算机系统在运作的时候,比本篇说明的复杂很多 ^^"。

你可能感兴趣的:(object)