例7-13给出了结构体类型使用示例。该例使用res:{def close():Unit}结构体类型作为releaseMemory方法的参数。
【例7-13】结构体类型示例。
代码执行结果:
例7-13第4~10行代码定义了一个方法releaseMemory,该方法的参数是一个结构体类型。
第14行代码给出了结构体类型的使用,通过new关键字,然后用大括号给出结构体类型中定义的抽象方法的具体实现。
结构体类型还可以用type关键字进行声明,例7-14给出了其使用示例。该例使用type关键字进行结构体类型声明,它适用于结构体类型存在重用的情况,以简化程序设计。
【例7-14】type关键字声明的结构体类型示例。(www.daowen.com)
例7-14第6行代码通过type关键字对结构体类型进行声明,如果把结构体类型看作是一个类的话(实际上结构体类型与类之间没有太大差别,这点在后面会讲),可以看作是为结构体类型取了一个别名,代码第8行给出了其使用方法,在定义releaseMemory2方法时,直接使用X,替代{def close():Unit},这样做的好处是当结构体类型较复杂且在程序中多次使用时,可以使代码更简洁易读。
从前面的结构体类型使用示例来看,如例7-14中的第11、12行,通过new的方式对结构体类型中的抽象方法进行实现,这有点像创建匿名类,其实releaseMemory方法不仅可以通过第11行、第12行代码的方式传参,它还可以接受类的实例或单例对象作为参数,只要该类或单例对象中的方法标签与结构体类型中声明的方法一致,具体代码如例7-15所示。该例通过将普通类对象File和单对象File作为带结构体类型的函数参数,演示结构体类型与普通类、单例对象之间的联系与区别。
【例7-15】普通类对象或单例对象作为结构体类型参数使用示例。
代码执行结果:
通过例7-15第19行、第21行代码可以看出,虽然releaseMemory方法中的参数是一个结构体类型,但也可以传入普通类对象和单例对象,只要该对象或类中具有结构体类型中声明的方法即可。这说明结构体类型可以看作是类,只是表现形式与类有所区别而已。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。