接口
Java中的 interface (接?)是?种表?抽象数据类型的好?法。接?中是?连串的?法标识,但是没有?法体 (定义)。如果想要写?个类来实现接?,我们必须给类加上 implements 关键字,并且在类内部提供接?中? 法的定义。所以接?+实现类也是Java中定义抽象数据类型的?种?法。
在Java代码中,接?被?的很?泛(但也不是所有类都是接?的实现),这?列出来了?个使?接?的好处:
- 接?对于编译器和读者来说都是重要的?档:接?不仅会帮助编译器发现ADT实现过程中的错误,它也会帮助 读者更容易/快速的理解ADT的操作——因为接?将ADT抽象到了更?的层次,?户不需要关?具体实现的各 种?案。
- 允许进?性能上的权衡:接?使得ADT可以有不同的实现?案,?这些实现?案可能在不同环境下的性能或其 他资源特性有很?差别。使?者可以根据??的环境/需求选择合适的实现?案。但是,在我们选择特定的? 案后,我们依旧要保持代码的表?独?性,即当ADT发?(内部)改变或更换实现?案后代码依然能正常运?。
- 通过未决定的规格说明给实现者以定义?法的?由:例如,当把?个有限集合转化为?个列表的时候,有? 些实现可能是使?较慢的?法,但是它们确保这些元素在列表中是排好序的;?其他的实现可能是不管这些 元素转换后在列表中的排序,但是它们的速度更快。
- ?个类具有多种“视?”:在Java中,?个类可以同时实现多个接?,例如,?个能够显?列表的窗?部件就可 能是?个同时实现了窗?和列表这两个接?的类。这反映的是多种ADT特性同时存在的特殊情况。
- 允许不同信任度的实现:另?个多次实现?个接?的原因在于,你可以写?个简单但是?常可靠的实现,也 可以写?个很“炫”但是bug存在的?率(稳定性)??些的实现。?使?者可以根据实际情况选择相应的?案。
枚举
有时候?个ADT的值域是?个很?的有限集,例如:
?年中的?份: January, February, …
?周中的天数: Monday, Tuesday, …
?向: north, south, east, west
画线时的line caps : butt, round, square
这样的类型往往会被?来组成更复杂的类型(例如 DateTime 或者 Latitude ),或者作为?个改某个?法的? 为的参数使?(例如 drawline )。当值域很?且有限时,将所有的值定义为被命名的常量是有意义的,这被称为枚举(enumeration)。
原文地址:https://www.cnblogs.com/L160300101/p/9191423.html
时间: 2024-10-08 03:30:09