什么是默认方法-Default Methods

简单的说,就是可以在接口中定义一个已实现方法,且该接口的实现类不需要实现该方法;

如下示例:

  1. interface GreetingService
  2. {
  3. void sayMessage(String message);
  4.  
  5. //可以在接口中定义默认方法
  6. default void sayHello(){
  7. System.out.println("Hello");
  8. }
  9. }
  10.  
  11. //实现类不需要实现接口中的默认方法
  12. class GreetingServiceImpl implements GreetingService{
  13. @Override
  14. public void sayMessage(String message)
  15. {
  16.  
  17. }
  18. }

为什么要有默认方法

主要是为了方便扩展已有接口;如果没有默认方法,加入给JDK中的某个接口添加一个新的抽象方法,那么所有实现了该接口的类都得修改,影响将非常大。

使用默认方法,可以给已有接口添加新方法,而不用修改该接口的实现类。当然,接口中新添加的默认方法,所有实现类也会继承该方法。

举个例子,在Java 8的Iterable接口中,新增了一个默认方法forEach,也正因为forEach是默认方法,才不用修改所有Iterable接口的实现类。

Iterable接口新增的forEach方法如下(入参是一个函数式接口,因此支持Lambda表达式):

  1. default void forEach(Consumer<? super T> action) {
  2. Objects.requireNonNull(action);
  3. for (T t : this) {
  4. action.accept(t);
  5. }
  6. }

因为Collection接口继承了Iterable接口,所以我们可以在集合类中使用forEach方法,如下,这里使用了方法引用(一种更加紧凑的Lambda表达式)

  1. List<String> list = new ArrayList<String>();
  2. list.add("001");
  3. list.add("002");
  4. list.forEach(System.out::println);

可见,我们在未破坏Iterable接口实现类的前提下,给Iterable接口的所有实现类添加了一个新方法forEach,这在Java 8之前是不可能的。

重写Override默认方法

  • 如果子类没有重写父接口默认方法的话,会直接继承父接口默认方法的实现;
  • 如果子类重写父接口默认方法为普通方法,则与普通方法的重写类似;
  • 如果子类(接口或抽象类)重写父接口默认方法为抽象方法,那么所有子类的子类需要实现该方法;

关于默认方法调用冲突

因为一个类是可以实现多个接口的,如果多个接口定义了同样的默认方法,那么子类如何调用父类的默认方法呢?

具体调用流程如下:

1、首先,如果子类覆盖了父类的默认方法,那么什么也不用想,直接使用调用子类覆盖后的方法;

2、其次,优先选择调用更加具体的接口默认方法,什么意思呢,举个例子,如果A1接口继承A接口,那么A1接口相对A接口就更加具体,当C类实现了A1接口的时候,就优先调用A1接口的默认方法;

3、最后,如果C类同时实现A1接口和A2接口,且A1和A2有同名的默认方法,那么选择哪个接口的默认方法呢?答案是编译器报错,提示定义了重名的方法,快速修复方式是覆盖其中的一个即可;

关于这块内容,在网上看到一段有意思的代码,如下,知道为什么会报错吗?如果删除InterfaceB中的foo方法,是否还会报错?往InterfaceC中添加foo方法又会怎样?

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA3IAAAHxCAIAAACnDhnpAAAgAElEQVR4nO3d74/l1n3fceYPyOP8D3pWrCLALJAiKlK4MJI06E7QbOsGiiZ00KaoWk2cbGJk1vaDSGiD5QCdpOhE6GajKk1HyCYPhsUGSFbTFpE9kT1ZOzuWTdvSKhrvWusfsSwp8i+xD/jr/OYh77kk773vF76wdy7vJQ9/zPCjc0jeqAAAAMD6evfdd3/3d3/37bfffuutt771rTe/8Y1vfu1rX//qVx98/gtfvHPn5du3/+ZTn7r94ot/9cIL/+/09Pb+7+y/8cYb7/op5//SSy/d/co7d7/yTjTtegIAAGCpiJUAAAAIgFgJAACAAIiVAAAACIBYCQAAgACIlQAAAAiAWAkAAIAAiJUAAAAIgFgJAACAAIiVAAAACIBYid6yJGrEaT51cwzyNJ5x6wAAWE/zjpXZ3m60tRvfeNDjMyeH0dZucjJkcVbnx/HWblTVYRZ03h7EGNcvzGVJFCVh25uncfB52pQr3jsbZgmBEgCA8c06Vj5Id3rHyjKJhoyVUqacJFZW8jTum5aWECuXMEvHouI0Tfqu9IDtBAAAFjfrWDlE+Fh5chht7UZ7Z+HmONAsYuWInZVZGSh7rwOxEgCAScw0Vlb9lGVJvZVl3+HeWRkfo63daOc41z7SlJAvbfMsXz/M2jfsp+dFUSdUpeoPaotTcmcZRrekGXasWhdTXCqjlzBKXgWw+uJC+9C5OLIupjYhzEkT9ZF45ZOuKy6l5ng1o2lI/2xMrAQAYBIrGisNUc8dKw1T5YB4mIghcuc47xsrhXbmN/blSU2sdH2qkyVWKtFPC22GRCZ3Oco/VXOsZqN1Tlp6K/M0bl/MEikjKj/6NaNNlb1z5YjD9AAAoDXTWFkp85kxVlYvaiPU5kHw8m1Vv6byo9JJeZYo/Ys+g+DSe8o5mAbiXc3w2BqWWKn0GCpdj+YMaE+fSjRV3+s1CC7Oz9532NWMZpr3wHsZiYmUAABMYkVjpZLMumKl1n1oGD239hraYqU0zC2Mgyst9G2Gx9YIFSuN49lirHQEM1vE00bdu+fnaob8qV4XdI55qzoAAGhtRqx09guWsVK8/NH0WeOlk82L4o91f2p3b2VPQWOlNXcNiZV5GktdnI7eT78lOYNvF66tBABgEvOMlaYLKKs05hcrtWsrq4Fp+1WSg2KlsbfSdFGmRzO6DYiV9ishnYluUKxUrs6Ur5k0xjxrM/Q29OmCJFYCADCJtYuVSnSz3Qm+aKyUsuN+elLdn95MVca7PZrh4HgcekeslAentWskTV2BwwbB5cVkaaynW/9mmJrQI1cSKwEAmMQ8YyUwHLESAIBJECuxdvjyRgAApkCsxBqqx9YJlwAAjIdYCQAAgACIlQAAAAiAWAkAAIAAiJUAAAAIgFiJVZYlysMsxe8SBwAAYyJWYiTiQ93DJD/jg4QW+Epw7h8HAGARxEqF5Tt1rKQvBDoclGZK0rfvGL565+TQ/D3jy1F+h5DrG4D6bagFwp7NoC8bHzQ/AADgg1ip6JWW1C+ZXGKsLHPeWLGyaky4WDks6XXM0BoCh4RYvpsHAIAFESsVvdJS365ND+WXiU8dKz30WvfgnZVdMbV/jCVWAgCwIGJlUSg9hXJaMnciliFPqXqqfW5l7+bOcRVeTMlMi5Xa3LZ88mX1KeFtyitniaHl1vX12FBm4gWVrTbw1ZczGq5pdEzySI29cyWxEgCABREr5YAlpyVDpCuTVr9Y2UwaL1ZqMxcXrY7dW1dZjpWODdXF3FuZJWLEzNO4jY+OSYVXBOydEoMP0wMAsGk2PlaWMc4c9cp/K5OaHwu/gWDxPUNiZaX/IHgZEKvLPcWPV5m4WW7ZDPnCUL0Zrg3VyRQr9deaKOiYZPjJukTPWFn2qBIpAQBY0MbHSjWuCWmpClJK+cTKKqhpvXqjxkpxVmeJsFxtVmUA3U/PXc1wbCiPplhipWVs2zHJ9lHTEvv0Vi7hVnUAADYMsVJ6kk49BGzsrdQZo5XyorW3sh5TXlqsbNPkyaHhwtCevZWuDdUpcG8l11YCADBDGx8rDT2LbVoyXE0oBT5HrHT0VnovS5yzcjWnZ77Mb+xHW/vxjpwaTc2Qrv40dtC6NlRnO3yvrax/ckxqpnMnOAAAs0KslAa799Pzs0RKS+odM92xUoqA++nJcWzoGtQndd4QI73Bt9uyjolq96ccH9u5OWJlx4Zysg4xS3eKa1/DaJtU8NxKAADmh1iJFRX4W3aIlQAALIhYiZUlj5RXBt97w5c3AgCwGGIlVliexvrQ+eBsWD+AnXAJAMAQxEoAAAAEQKwEAABAAMRKAAAABECsBAAAQADESmCZsoTvhFxpi9wEBgCbhliJtZMlwW7nFp7JHuqhRZej4qG4eKUonomLh6LiVoBWLsWtpHgoqupiOnVrTAK20LVT+Lp4APBGrBxb/RSbBcKKYtDTv0f3dhq/EMWvjtHtMyBWdmzDYZvY/CTMy1HxUFIUdSq6Vb8uhqR+USkLH09fSceLvOWK982FYVto2ymV1fgVA4DpEStHZXyAd4iZzv6cl92Johfi9O2p22GxhFhpe7z6M7EzweTFxah4plf6XkKsvJVUjRzB5ah4Jq06C/2FbWHHTqHHEgD8ECvHtJwvclmFWJmnJ1H0wnxbGT5WWj/SJJhXjFlqHrGyaeTSZdVGuBwVl/ts4bAt7NgpxWr8lgHA5IiVYyoHwE0nJ703RI6g8tB59UZlPD3SvyJGuDSwnXuexlGSlp+N07x6j+cp840keiGqq+19zF+Noxei5I16CU2IfDuN2/c31bmw8j4J85WN1T0U7cR2mv1SSNsMu7dhPV/PGdo/4ccUK28lxcVUGiW/VRRFPRDsGjrPhEmJ/Hod5sqpVaTLDDOUMqv4Bi1+lRcm9mhGvWqFf+9jVwulbSK30DHJZ8HGPVoeP9zTAwAlYuXImhyinomUnkzpJObOKJapclIVfmrOhO0p0S8EZXdsAbHMkXXKLKPkSZoXSgyt66TzLCxnXXlVqmnVxjINT5pToDBDrdu4f2+le4Z5Gg/MGpZYKQayy6bQdkubk3L1odS9V4ezckH6dYrmvsC8uCi8eFnOiJe1yNjdjHIEPHethY2xhcoQ9jNxGx8dk/yYdymxEgBExMpJNH1kSpCsf1ROYe5LMu3dKObk1ExpE5lPrKwCohBU2yiZJWJYfCOJ5Ltz5L5MH2qDxJ+VCGc43VtSoNzjaZ2/R3M6Zxg+VibWH22B7JnYnj6zNlMaF+ozxCw2wzp23NmM5lN5cbHPOLihhfocmvVyTPI1fJcCwOYgVk4oT2N1oLv8KU9jNcUIg7Wmfk49Eonj3/JA7aBYKfdHKq+UifNOHfvuRHKI1D/byRT76vXubiyxsiiEAW7DYHFX16AtVorD3GIHqmMI29EM5VO9Lpe0xUpl01WXbDom+SJWAkA3YuWU1AHc9qpB+/lLyaKFK1aag9ICsbINi9WA+J2sqDsjy+7JeqBcDJFZ4nU9pav1am/l3GNl8Gsrh8VKa2waFCuVgWOxGbcSa2+loxmu4Ntl9N5K7tkBgG7EygnpY9t5GkdJ4v5eFq3XxPLwE+szUTxiZdnVKYdX64WVrknV3MRJd5QmGZalNkge9l5GrOx4gEz/GQ5OIQNipWX42PVkx8GxUrk6s/kxLy5anj1pbYbehj7j4L7XVibdk7y4rmAmbwJAhVg5JnVg2nYHgH0A3PUpfap6m3N7y45XrFTaUXVYGtKhcLt38kaR3VFvyim7M52x0nAjtdZwYZr5NG4Y+Ld0cerzMG7DRWbY92lSjsehd8RK+R5nMdupt4rLofCWvTHWW3aEO6lvpYZ0698M47i5f9qzvVPajNpd57ZJXez/2UGuBAABsXJeuICrtBYjjst5TCnG5zoc7U8NA4DNQ6ycE77Lo7YWsbLrFn6sBPdvZcAvoAeA1UesnIVmBJYIUlqTWGm8qR8rxX4DHePfAKAiVgIAACAAYiUAAAACIFYCAAAgAGIlAAAAAiBWAgAAIABiZdE89JqnhAAAAAxGrKzxzEgAAIAFECsbfMENAADAcMTKBrESAABgOGJlg1gJAAAwHLGylSXctgMAADAQsVJWfs0vd+4AAAD0RKxsMQoOAAAwGLGyQaoEAAAYjljZIFYCAAAMR6xsECsBAACGI1Y2iJUAAADDEStrfHkjAADAAoiVRfnAyohnVgIAACyAWAkAAIAAiJUAAAAIgFgJAACAAIiVAAAACIBYCQAAgABmGyu5OxsAAGCVzDZWFkXBsyQBAABWxrxjJd98AwAAsCKIlQAAAAiAWAkAAIAAZh4riyzhth0AAIAVMPdYWRTVjTvcuQMAADBnc4+VjIIDAACshJnHSlIlAADAaiBWAgAAIABiJQAAAAIgVgIAACCAecdKvrwRAABgRcw2VmZJFEU8sxIAAGBFzDZWAgAAYJUQKwEAABAAsRIAAAABECsBAAAQALESAAAAARArAQAAEACxEgAAAAEQKwEAABAAsRIAAAABECsBAAAQALESAAAAARArAQAAEACxEgAAAAEQKwEAABAAsRIAAAABECsBAAAQALESAAAAARArAQAAEACxEgAAAAEQKwEAABAAsRIAAAABECsBAAAQALESAAAAARArAQAAEACxEr1lSdSI03zq5mBs8z8A8jSecesAYG3NO1Zme7vR1m5840GPz5wcRlu7ycmQxVmdH8dbu1FVh1nQeXsQz+L9zuVZEkVJ2PbmaRx8njp1lZe+wGUcNsKco72zBWaxgQdAqVzx3tkwSwiUADCJWcfKB+lO71hZJtGQ+UDKlJPEykqexn1PlktIFUuYZedSlh8Twh82jQCxsrJJB0C9qDhNk74rPWA7AQCCmHWsHCJ8PggXCxY0i1QxUl+V0vClRxliZZ9GjBQrszJQ9l4HYiUATGWmsbLqpyxL6q0s+w73zsocEG3tRjvHufaRpoSgYJtn+fph1r5hPz0vijpqKFV/UFuckhvKMLElzbBj1bqYzpblmVcYJK3Ov/W1ZfaRU3FgVTxpC+dyaaI+EKt80nXBndQcn2ZIUaJPkjFv3npX1j3N1d7ZT8+HHjbW49DwKfnwOEuGdn5v0gHQNqR/NiZWAsBUVjRWGqKeOx8YpsoB8TARQ+TOcd43VgrtzG/sy5OaWOn6VCdLqlDO/No523BClnOa/FM1x2o2WqKzRLw8jeUx68j6o1czlAzjGRI8dsrOcV4dQmWeG3rYWI/DQguOYqzUJy0eK9fyABBSZe9cOeIwPQBAMtNYWSmjgDFWVi9qI4zm0czybU1/kvSj0klZnviF/kWfQUzpPVV0MIyouprhsTUsqcIxWGw+wWozEt+mJBP1vV49h+L87F1Hrmbo11Z6BIWuzSv+d4Kyd3ofNvbjsM2v4qeUWDloTHyTDgAxVfp3V5eRmEgJAFNZ0VhpPmcXhSUfaN2Hu3qstPYa2mKlNMwtZAWlhb7N8NgaoVKFcThTTBWO87LtDK8NunbPz9UMvxVRmtC9eatUp+/r3oeN/ThUZ6UcP0o3p/feLzb5AOh1QeeYt6oDACSbESud/YJlrBQvfzR91njpZPOi+GOdG7p7K3sKmiqsp90hqSJPY6mHy9H55bmkIbGya/NKI9pDeitFXbFSvVjC0D3Zu+dygw4AZ/DtwrWVADCVecZK04Vrnb1EJeWCyDooGC53k0/8g2Kl+fo5w0WZHs3oNiBV2C+Ec57QB6UK5eI8+ZI541ne0YxhDxhybV4hOGrXOQw4bBzHoevY4ADwaobehj5dkMRKAJjK2sVK5cxtu6V30VgpBZH99KS6L7iZqoyfejTDwfE07M4H8Yhjk9olcqaeoGFjoPJisjTWw02vZiir7D+kady8Wpdheyd488Geh43zOBT2/n56fpbYY6Vfpty0A8DUhB65klgJAFOZZ6wEgIGIlQAwFWIlgPXClzcCwESIlQDWTT22TrgEgFERKwEAABAAsRIAAAABECsBAAAQALESAAAAARArAQAAEACxsnJ6sF07OJ26MWanB9vb21eO7nW8Za7NBwAA641YWRTFvaMrQhpTopmQNydObMRKAAAwY8RKQxQ7PajSm543Zx7aiJUAAGAqxMomQ8qvHZwqobIoypjp7i6cGLESAABMZdNj5b2jK2UOa8e6rxzdK6OmIaOdHpTD0HrirKcIP5qGzqsQ205uJ7onOcbhxWXpi5vJCD4AAFh3mx4ry37Jppev+v/Tg+0rR58xdE223ZVyjJRippw5DQPpzSelaY5JwoeVl5S3ie9wNQMAACC0DY+V946uVD2EV47utanx9GD74NQ04i28JuZK6a3a58Ssp3Rqiu91TDLMyPyK8LOzGQAAAKERK68c3WsSmNBpWcZKV39hm9vkBKeMScsj0I5s1x37tHdoTRTe4WwGAABAaBseK8tuSqGTsu2sNI0bGy6gLIfM1ScSWeNb2Fjp6q2kcxIAAIxqw2NlNQh+7+hKeVnjafkP6XJH6bpIeVj69GB7++BAvZXcdRlj4FgptqlaCcu1lQAAAMu14bGy7ph0vsExhFxGOf2ZQ3XE0z45KFYaxrNNd4lX/a7CPKzNAAAACG3TY6WSwwAAADDMpsdK/UlBB3N+3DkAAMBcESsLeZB51l+iAwAAMFvESgAAAARArAQAAEAAxEoAAAAEQKwEAABAAMRKrLIsiZJMeSFO86maAwDAJiNWYiRZEjXCJL8sMcwpT+NIiZq+8jQO2DoAADYNsVJxchht7UZ7Z77vPz+Ot3ajqg4HpZnSg3Snmc9ufOOBsWHJyfAF9JLtWZoht8d7Qy0Q9myMobKZ0n9Z9vkBAAAfxEpFr7QkZcrlxsoy540VK6vGhIuVw5JexwytIXBIiM3TmFQJAMAiiJWKXmmpb9emh/zG/gxipYde6x68s7IrpvaPscRKAAAWRKwsCqWnUE5L5k7EMuQpVU+1z63s3dw5rsKLKZlpsVKb25ZPvqw+JbxNeeUsMbTcur4eG8pMvKCy1Qa++nJGwzWNjkkeqbF3riRWAgCwIGKlHLDktGSIdGXS6hcrm0njxUpt5uKi1bF76yrLsdKxobqYeyuzRIyYeRq38dExqfCKgL1TYvBhegAANs3Gx8oyxpmjXvlvZVLzY+E3ECy+Z0isrPQfBC8DYnW5p/jxKhM3yy2bIV8YqjfDtaE6mWKl/loTBR2TDD9Zl+gZK8seVSIlAAAL2vhYqcY1IS1VQUopn1hZBTWtV2/UWCnO6iwRlqvNqgyg++m5qxmODeXRFEustIxtOybZPmpaYp/eyiXcqg4AwIYhVkpP0qmHgI29lTpjtFJetPZW1mPKS4uVbZo8OTRcGNqzt9K1oToF7q3k2koAAGZo42OloWexTUuGqwmlwOeIlY7eSu9liXNWrub0zJf5jf1oaz/ekVOjqRnS1Z/GDlrXhupsh++1lfVPjknNdO4EBwBgVoiV0mD3fnp+lkhpSb1jpjtWShFwPz05jg1dg/qkzhtipDf4dlvWMVHt/pTjYzs3R6zs2FBO1iFm6U5x7WsYbZMKnlsJAMD8ECuxogJ/yw6xEgCABRErsbLkkfLK4Htv+PJGAAAWQ6zECsvTWB86H5wN6wewEy4BABiCWAkAAIAAiJUAAAAIgFgJAACAAIiVAAAACIBYCSxTlvCdkCttkZvAAGDTECuxdrIk2O3cwjPZQz206HJUPBQXrxTFM3HxUFTcCtDKpbiVFA9FVV1Mp26NScAWunYKXxcPAN6IlWOrn2KzQFhRDHr69+jeTuMXovjVMbp9BsTKjm04bBObn4R5OSoeSoqiTkW36tfFkNQvKmXh4+kr6RiRV13lpMdnw7bQtlMqq/ErBgDTI1aOyvgA7xAznf05L7sTRS/E6dtTt8NiCbHS9nj1Z2JngsmLi1HxTK/0vYRYeSvpF/KCLOVyn07HsC3s2Cn0WAKAH2LlmJbzRS6rECvz9CSKXphvK8PHSutHmgTzSloNvErmESubRi6VEg17JcWwLezYKcVq/JYBwOSIlWMqB8BNJye9N0SOoPLQefVGZTw90r8iRrg0sJ17nsZRkpafjdO8eo/nKfONJHohqqvtfcxfjaMXouSNeglNiHw7jdv3N9W5sPI+CfOVjdU9FO3Edpr9UkjbDLu3YT1fzxnaP+HHFCtvJcXFVBoyvlUURT0Q7Bo6zyxDzFkVni7XUy9n2vsjdXHqG7T4VV6Y6N8MKUfmxcWmGQ5dLZS2idxCxyQP5j1aHj/c0wMAJWLlyJocop6JlJ5M6STmziiWqXJSFX5qzoTtKdEvBGV3bAGxzJF1yiyj5EmaF0oMreuk8ywsZ115Vapp1cYyDU+aU6AwQ63buH9vpXuGeRoPzBqWWCkGMnWw2NJbqVx9KHXv1eGsXJB+naK5LzAvLspj1g/Zf/RphnJtZa/bbowtVIawn4nb+OiY5Me8S4mVACAiVk6i6SNTgmT9o3IKc1+Sae9GMSenZkqbyHxiZRUQhaDaRsksEcPiG0kk350j92X6UBsk/qxEOMPp3pIC5R5P6/w9mtM5w/Cx0jFYbImVz8T29Jm1mdK4UJ8hZrEZ1rFjZzP0aysXGgTX+zub9XJM8jV8lwLA5iBWTihPY3Wgu/wpT2M1xQiDtaZ+Tj0SiePf8kDtoFgp90cqr5SJ804d++5EcojUP9vJFPvq9e5uLLGyKIQBbsNgcdflmLZYKQ5zix2ojssiHc3wXBHfFpo23eUyTTom+SJWAkA3YuWU1AHc9qpB+/lLyaKFK1aag9ICsbINi9WA+J2sqDsjy+7JeqBcDJFZ4nU9pav1am/l3GNl8Gsrh8VKa2waFCuVgWOxGbcSa2+loxnLiJVL663knh0A6EasnJA+tp2ncZQk7u9l0XpNLA8/sT4TxSNWll2dcni1XljpmlTNTZx0R2mSYVlqg+Rh72XEyo4HyPSf4eAUMiBWWm52cT3ZcXCsVK7OlG+4MV4c6WjGIg8Y8r22Mume5MV1BTN5EwAqxMoxqQPTtjsA7APgrk/pU9XbnNtbdrxipdKOqsPSkA6F272TN4rsjnpTTtmd6YyVhhuptYYL08ynccPAv6WLU5+HcRsuMsO+T5NyPA6980E84j3OYjJTbxWXQ+Ete2Ost+wId1LfSg3ptlczlFXuMyRtzYXSPBPfSV3s/9lBrgQAAbFyXriAq7QWI47LeUwpxuc6HO1PDQOAzUOsnBO+y6O2FrGy6xZ+rAT3b2XAL6AHgNVHrJyFZgSWCFJak1hpvKkfK8V+Ax3j3wCgIlYCAAAgAGIlAAAAAiBWAgAAIABiJQAAAAIgVgIAACAAYmXRPPSap4QAAAAMRqys8cxIAACABRArG3zBDQAAwHDEygaxEgAAYDhiZYNYCQAAMByxspUl3LYDAAAwELFSVn7NL3fuAAAA9ESsbDEKDgAAMBixskGqBAAAGI5Y2SBWAgAADEesbBArAQAAhiNWNoiVAAAAwxEra3x5IwAAwAKIlUX5wMqIZ1YCAAAsgFgJAACAAIiVAAAACIBYCQAAgACIlQAAAAiAWAkAAIAAZhsruTsbAABglcw2VhZFwbMkAQAAVsa8YyXffAMAALAiiJUAAAAIgFgJAACAAGYeK4ss4bYdAACAFTD3WFkU1Y073LkDAAAwZ3OPlYyCAwAArISZx0pSJQAAwGoQY+Vbb7391ltvf/vb3/7Wt968d++rr7/+lddee/2VV1777GfPiJUAAABwEWPlO+/8/T+M48d/4Rd+7Vd/tay9NP2TGzfy/MvESgAAALgosTL5xV/8/WvX/rT253/+5ycnJ8RKAAAAdJj3IDhf3ggAALAiZjsIniVRFPHMSgAAgBUx80FwAAAArIZ5D4IDAABgRcx2EBwAAACrRImVH/voR//kxo2/qL344ou3b98mVgIAAKADg+AAAAAI4N15f3kjAAAAVgOxEgAAAAEQKwEAABAAsRIAAAABECsBAAAQALESAAAAARArAQAAEACxEgAAAAEQKwEAABAAsRIAAAABECsBAAAQALESAAAAARArAQAAEACxEgAAAAEQKwEAABAAsRIAAAABECsBAAAQALESAAAAARArAQAAEACxEr1lSdSI03zq5mBs8z8A8jSecesAYG3NO1Zme7vR1m5840GPz5wcRlu7ycmQxVmdH8dbu1FVh1nQeXsQz+L9zuVZEkVJ2PbmaRx8nq5F1Za8yGUcNsKco72zBWaxqQdAteK9s2GWECgBYBKzjpUP0p3esbJMoiHzgZQpJ4mVlTyN+54sl5AqljBL63LEBWXJMpca/rBpBIiVlc06AMpFxWma9F3pAdsJABDErGPlEOHzQbhYsKBZpIqR+qrG7m8iVvZpxEixMisDZe91IFYCwFRmGiurfsqypN7Ksu9w76zMAdHWbrRznGsfaUoICrZ5lq8fZu0b9tPzoqijhlL1B7XFKbmhDBNb0gw7Vq2L6WxZnnmFQdLq/CuNHxtHTsWBVfGkLZzLpYn6QKzySdcFd1JzPJoxPFWaN2+9K+ue5mrv7KfnQw8b63Fo+JR8eJwlQzu/N+gAEBrSPxsTKwFgKisaKw1Rz50PDFPlgHiYiCFy5zjvGyuFduY39uVJTax0faqTJVUoZ37tnG04Ics9TvJP1Ryr2Wh9U5bOqjyN5VAYWX/0aMbQHjGPnbJznFeHUJnnhh421uOw0IKjGCv1SYvHyjU8AKpP1avSM1eOOEwPAJDMNFZWyihgjJXVi9oIo3k0s3xb058k/ah0UpYnfqF/0WcQU3pPFR0MI6quZnhsDUuqUDqMlJ4ncwSwhw8lmajv9Up84vzsXUf2ZgyMlV2bV/zvBGXv9D5s7Mdhm1/FTymxctCY+OYcAIWUKv2PhzISEykBYCorGivN5+yisOQDrftwV4+V1l5DW6yUhrmFrKC00LcZHlsjVKowDmeKqcJxXrad4bVB1+752ZsxLFZ6bN4q1SpnC8AAACAASURBVOn7uvdhYz8O1Vkpx4/Szem994tNOgDUT/U6IMa8VR0AINmMWOnsFyxjpXj5o+mzxksnmxfFH+vc0N1b2VPQVGE97Q5JFXkaSz1cjs4vvyWpM/TTsXmlEe0hvZWirlipXixh6J7s3XO5QQeAM/h24dpKAJjKPGOl6cK1zl6iknJBZB0UDJe7ySf+QbHSfP2c4aJMj2Z0G5Aq7BfCOU/og1KFcnGefMmc8Szf1YzeDxhybV4hOGrXOQw4bBzHoevY4ADwaobehj5dkMRKAJjK2sVK5cxtu6V30VgpBZH99KS6L7iZqoyfejTDwfE07I5UIY9NapfImXqCho2ByovJ0lgPN/2aoa23Z6Qwbl6ty7C9E7z5YM/DxnkcCnt/Pz0/S+yx0i9TbtoBYGpCj1xJrASAqcwzVgLAQMRKAJgKsRLAeuHLGwFgIsRKAOumHlsnXALAqIiVAAAACIBYCQAAgACIlQAAAAiAWAkAAIAAiJUAAAAIgFgJAACAAIiVAAAACIBYCQAAgACIlQAAAAiAWAkAAIAAiJUAAAAIgFgJAACAAIiVAAAACIBYCQAAgACIlQAAAAiAWAkAAIAAiJUAAAAIgFgJAACAAIiVAAAACIBYCQAAgACIlQAAAAiAWAkAAIAAiJUAAAAIgFgJAACAAGYbK7MkiqIoitM8+DoDAAAguNnGyqIoiiJP4yhKspArDAAAgGWYd6ws8jSmwxIAAGAFECsBAAAQALESAAAAAcw8VhZZwm07AAAAK2DusbIoqht3uHMHAABgzuYeKxkFBwAAWAkzj5WkSgAAgNVArAQAAEAAxEoAAAAEQKwEAABAAPOOlXx5IwAAwIqYbazMkiiKeGYlAADAiphtrAQAAMAqIVYCAAAgAGIlAAAAAiBWAgAAIABiJQAAAAIgVgIAACAAYiUAAAACIFYCAAAgAGIlAAAAAiBWAgAAIABiJQAAAAIgVgIAACAAYiUAAAACIFYCAAAgAGIlAAAAAiBWAgAAIABiJQAAAAIgVgIAACAAYiUAAAACIFYCAAAgAGIlAAAAAiBWAgAAIABiJQAAAAIgVgIAACAAYuUSZElUS7KpG4M1IhxZUZzmUzdnJc1/G+ZpPOPWAYDL6sXKB+nObrRVVXzjQaj5DlH//TcnyCwZK1aWZ8reZ6FsL9Q2nNNOOTmMtnaTkyDzEiNIvyCyhJ2fp/EIB5S6ygsvcAO3YbuoAVsxSwiUAFYXsXKwLJFPF1minDtGi5VZEsVpmvQ9GVVbcs1iZZmVA8XKSp7GfTfuEnb+OMeTvJRwGWeTtqHHHwerAdsJAOZj9WJlJb+xP2mC8TjfjngKi9N8xM5Rq6l3SlGscawcqaNNaXiw9di0bTg0GhIrAay0OcfKk8OmAyza2k/PpYmmBCP1mUVbu9HemTD1LBEnbR1mXpMsfE4clrOi/douadhM/qhjUlZ3U/qfhW2diw/Snd1o77DaGnvH1dt2jvOiKM6P463daO+szG3t62IrzbHSuDjnshyNtDZD2/tbSr7sv5eb9TKc6svNrl9GK+8p034WDwBxfwn/eSBN1EeRlU+6rhaUmuPTDOkoChjDNmgbLtTFS6wEsNLmGivLgLJorGzfoEQKMVU4Jtmb53O6NcW8PI3l00/7DkcqdAXGrB389s6VzlipJbNq45d5TikpuPfaKc5lOXalqRmOGdaxcshebtfLHImU2KIFDsO+kA8c+adqjtVstEPMcsw5jihtKNanGUoAC5ZwNmcbLpbFZzDoAADDzTRWViHAMZTZPd5adnZWuadOFXIM6ppkX/rQWOl4h/X81TWpORX3PZ9p27BMZvvpeTuUXL4nOWnzXLVTqh+lcGbYKeVeaPog2x+dy7J+qm1GtRRpLxeFdRB8yF5u18sSiRyDxeadr81IfJsSq9T39j7m7P1ermbo11YubxB8Pbfh0FhZRmIiJYCVNs9YWUYHbYxVZI6V0ri5HCOUXi5x5o5JtqUPjpXa+J7WmdI5ECdOkpfR84RmjpU7x3kVzg6zQrixWt0pbS60z1Dvdd6VYqVlWfZPac3wjZVD9nK7FqEikXEsVoxEjp1n27nWI8o+P1cz/Fakv83Zhgv1Vo54qzoALMGcY2Xf3kolYWiBoxai5zJP4wG37Kifsp60HLOXJjlPsZ0WipVVgu/ZW9lyLsv6qQViZat3z2XQSGTdPUMikeuIsl/i13FRxfxj5by3oc8fB2cTubYSwMqaZ6ysw4HfRXJ1PtC7KvVBcP1aPdckZwvVISuPBwyZrgMzn5ocJxdhUtcSLIxXSXb1INovaixcO8W6eZ3LcuwUv1jpc9j437E+IBLZr+IbdAWt7aPOI8oebxzN6HzAULmQ3slnk7ahxx8HZxOJlQBW1lxjZaGNn3bHSilS7Kcn1S3Dxk8JkcIxqYvUWajeNmDsQBRH2+I0S2PpKi6BdkWYYZLlnqDOXBkoVtpvslb6AtWbaTxipe1T3bFSaYztsPHby/qutG18S8Lv3pvycdN/ANd+ROkL82mGssqGBvXMlRu4DfX17nFlCrESwCqbcazEvHhc8IqNkCV9YiV6IVYCWGnESngiVqIo6i467ipZloWeegkAEyNWwhOxEgOvq0Qv9dg62xnA6iFWAgAAIABiJQAAAAIgVgIAACAAYiUAAAACIFYCAAAgAGJl5fRgu3ZwOnVjzE4Ptre3rxzd63jLXJsPAADWG7GyKIp7R1eENKZEMyFvTpzYiJUAAGDGiJWGKHZ6UKU3PW/OPLQRKwEAwFSIlU2GlF87OFVCZVGUMdPdXTgxYiUAAJjKpsfKe0dXyhzWjnVfObpXRk1DRjs9KIeh9cRZTxF+NA2dVyG2ndxOdE9yjMOLy9IXN5MRfAAAsO42PVaW/ZJNL1/1/6cH21eOPmPommy7K+UYKcVMOXMaBtKbT0rTHJOEDysvKW8T3+FqBgAAQGgbHivvHV2pegivHN1rU+PpwfbBqWnEW3hNzJXSW7XPiVlP6dQU3+uYZJiR+RXhZ2czAAAAQiNWXjm61yQwodOyjJWu/sI2t8kJThmTlkegHdmuO/Zp79CaKLzD2QwAAIDQNjxWlt2UQidl21lpGjc2XEBZDpmrTySyxrewsdLVW0nnJAAAGNWGx8pqEPze0ZXyssbT8h/S5Y7SdZHysPTpwfb2wYF6K7nrMsbAsVJsU7USlmsrAQAAlmvDY2XdMel8g2MIuYxy+jOH6oinfXJQrDSMZ5vuEq/6XYV5WJsBAAAQ2qbHSiWHAQAAYJhNj5X6k4IO5vy4cwAAgLkiVhbyIPOsv0QHAABgtoiVAAAACIBYCQAAgACIlQAAAAiAWAkAAIAAiJWYvSyJkkx5IU7zqZoDAACMiJUIKUuiRpjklyWGOeVpHClR01eexgFbBwAAGsTKYc6P463daOfYFE0epDu70VZV8Y0H+juyPeukMXU34+Qw2tqN9s785rdA2LMxhspmSv9l2ecHAAAWRKwcZqFYWb1h6ljp0Yx+sXJY0uuYoTUEDgmxeRqTKgEAWBJi5TCuWFnJb+zPIDsuplesDN5Z2RVT+8dYYiUAAMtDrCwD4t5ZOSIciWFRyY5ixqonZTf21U/VTLGyqyOzXERV++m5u+nV3JIT2ytnyZZxce5mSFN9YqV4QWWrDXz15YyGaxodkzxSY+9cSawEAGB5iJVlQNwyBanOWGn8VK1vrMybhOobK7XeRLHBrhY6miElUc9YWa+AsbcyS8SImadxGx8dkwqvCNg7JQYfpgcAAA1iZR2/qh6+6sfDrPCKlYZP1RyD4KZJVZ4Tuh59lAGxWm7Z4VrOoep8bRJh1Q/a0cIq2hpXuZMpVuqvNVHQMcnwk3WJnrGy7FElUgIAsDzESvUqyTKo7afnXoPghk/V+sVKj4s1jYRZnSXCHMSI6d9C9VNBYqVlbNsxyfZR0xL79FYu4VZ1AABQI1Yas6Oht7IeHXaMjy/SW6l0f/ZQp8mTQ3Gew3or5UcO1WPl0/RWcm0lAACrhVhpugaxylWdl10aP+W4PNE4Q7l/USzPiJnf2I+29mNhNHzIepXNkO4ZWta1lfVPjknNdO4EBwBgVRArtYwlhbk2Zu2nJ9U9412fGhgrC+2uHd+ey3q2as+ovLh2bs5mCG3YT8/PkkVjZaHcKa59DaNtUsFzKwEAWCnEyqEXNWIMgb9lh1gJAMDyECuJlfMmj5RXBt97w5c3AgCwNMRKYuXc5WmsD50Pzob1A9gJlwAABEasBAAAQADESgAAAARArAQAAEAAxEoAAAAEQKwE5idLAt6lBADAOIiVG018GjmpZZjw29D4FCS+zxwAMHvEylFJXyrTK4gMevq32zhBRV3l9UpGS9iGgZ8ADwDAaIiVUxjwZS9LiBTjpBR5Kev2OPLg2zD491UCADAaYuUUZhErR8ooSsPXq8ct+Dbs2jzrtfkAAGuGWDkFU6ws78kQhoyr9FB/K4x96FwcZhYjR3WXRzu5mqiPxCufdF0tKDXHpxlSEOoTw86Srd2orcPqU8q3Ip0cRlu70d5ZO2nvLNurPyV9edKDdKedYXzjgfz6Yda+YT8972hc1za0bybXJI/UaH5HOc916gYGAKwiYuUULLFSiX5aaDMEDjmnyT9Vc6xmoyU6S8TL01ges46sP3o1QwlgntFHyZR9YqVS5SQ5U8rJsoqVyZ4w1fPLPM3bUN5MeRq3q+2YVHj1YpvfQqwEAMwBsXIKtljpGCy291JZ06cSTdX3evUcivOzhx5XM/RrK326K+tYWYVCgUesTE6Ed5Z5tHyb8qnqR6WTslx0d4dlveLq6uivNZvHMcnwk3WJxEcAwDwRK6cQLFYax2LFWOlIcLZYqY26d8/P1Qy/FdEpXY9NIuyMlW1HY5kX99PzIr+xr/ZiarFSGBb3ZouVlrFtxyTbR01LJFYCAOaJWDmFoLHSmtGGxEp1WNbR++m5pKGxsiX3XErZ0TGpTpzG3kpJmz57C9xbOfjaSgAA5oBYOYUBsdJ+JaQ1ZgyOlcrVmdZLAb2a0fmAoXIhyov6tZV1b6LjAkrTpLoP0j7D7lhpbKFjvQ0XUEpXmjruYBp4J3jVw0zeBABMilg5Ksfj0DsfxCMOTmvXSJpuRx42CC4vJktjPd32aoayytaBfHmCmgKlEeqqG3I32tpPT6q7v4vCECuriywr6l07PWNl9x1T+kdM6+yYVAx+biW5EgAwA8RKrA312srVNOxagzJXEisBAFMiVmJtrEestNwu775xP0ssw/QAAIyHWIm1sS6xssyQ2tC5JTUy/g0AmAtiJQAAAAIYL1bef/M9iqLGqR/54R/6kR/+ocmbQVEURW1UESspag2LWElRFEWNX8RKilrDIlZSFEVR4xexkqLmV88n0WNH4ivPPRY9/FTuPwdiJUVRFDV+ESs3up57rH0yd6/UQi1xGz6fRNH7PnYqv3h69eEo+uDzvjMhVlIURVHjF7Fy1BIjSL8g8nwSRclzQRvziafeF3yelso/9ki7yv7ZaP61hG149EHbUdHnGCBWUhRFUeMXsXKKOr36sN4d5a4lxMrnHouUkdbl1NEHI2lBzz02TpYdo4Jvw+cei6JHrn7CPDX/2CO+iyNWUhRFUeMXsXKKmkWs7JFRFilnTlr1Cr4Njz7o7s31PgyIlRRFUdT4RaycokyxsrwnQxglr9LDJ556nzpwrgySPp+0E8SI83wSPXL1E2VnoTj6LL6/JYQV8Q1qIpSGsz2aYR/S7aoXH9vajdr6gypsvX70yNZutHNUbb1P/kG0tRvtvdhO2nvx+b36U83b3rv/5nufe2qnneEjf/w5+fU/eL59w95Tr3c0r2sbSntN3oaOSR6p0Zw7y3mK25lYSVEURY1fxMopyhIrhUCmpTFL4JCv7ZM7z6roUy1IuwrQ0tN2evVhORRG1h89mtHzRpOmlEzZJ1YqVU6SM6WcLKtY+dieMFXKo/Yyb8PnHovUrVHHR8ekajN29OzmH3vEENOJlRRFUdQcilg5RdlipXQBotb1aIiVWsgQ36bcUKwu1GsAV2yGPfTYm7ForKxCoVAesfKxTwrvLPNo+TblU9WPSidluejuDkvbNtRXudnyjkkdW9i+qS1FrKQoiqLGr8Gx8gf/4L/ailjZVcFiZTvAbRiK7RhRtcVKaZhbHNG2355ib8bQWKl1PTaJsDNWth2NZV7ce+r1+6d/vKf2YmqxUhgW9y5brFR2bj1y7Zj05nv3iZUURVHUitcisfI7f/YFvYiVHhU0VlpD25BYqQ7Lis2w33zjaIY6wwEl91xK2dExqU6cxt5Kqdr02bttgXsrB19bqRexkqIoihq/iJVT1IBYaen2cz03cXCsVK7ObH48vfqw5f6brma4HjBUXlSqzFa/trLuTXRcQGmaVPdB2mfYHSuNLbRvQ9MFlGI0t10L++Z7g+8Er24DEmZFrKQoiqLGL2LlqOV4HHpHrJTvIBYjjnqruBQK+w+Cn159WLhP+bmn3qen237NePM9ZZRciU3yvUpVqSlQGqGuuiF3o629pz5Z3f395nuGWFldZFmVetdOz1hpvWDAdGGAtKO1r2G0Tbo/+LmV1X5pdzexkqIoihq/uLaSWptSr61czRr2LTvlFbHESoqiKGrK4k7wsauIrvDv5fz79SK60sTKGbRn6L+fT6IoUl+vr4Iwf/b5JOIBQxRFUdTURawctcocwP8u6X+PHtkqoitHp9O3ZPH/jR47Ul55+Klcf2dz575yaQGxkqIoihq/iJXj1Yz6w/j3Gv3bWMRKiqIoavwaL1YWAAAAWF/ESgAAAARArAQAAEAAxEoAAAAEQKwsiiJLoiiKojjNp24JAADAqiJW1vI0jqIkm7oZmI1tAAA2Xq9TJ7GykacxHZZobW9vF8VdiqIoitrYIlYORqyEhFhJURRFbXgRKwcjVkJCrKQoiqI2vIiVw2UJt+2gRaykKIqiNryIlYvJ0zjizh0UhT1Wfv/bZ1/7s2dfvfqb+UefeO2//dbf3/3LyX/tKYqiKGoZRawcjlFwiIyx8pt/eeOv//n7zx6/dPav/8Xnfv7S3/zcz7z0/n/0+u899d73v2z/tbyWRJcy6R+L1yKzOk7jKIqiJJv+D9a617UkupDmgz6bXYri3dwwadm7j8ODDRtylWe2vgv8Sq5i5btxu771EZiKL3YXsXIwUiUkeqz8xv89/PQHHv3W/zn+/ptvfuU/PX33w0++9pFff/e1u1/66G988aP/QXxnnl6IouYUMq9YmacXouTa9H/vNqLCx8oFd1/58SyJ4vTY8Yapt1u/qp48LFpsFeTf3zAVdMMep/Gi6zhKESunLiFWtkdgTqwcCbESEiVWfu/vPvupD/z4F/9N8tpHfv075+ffOT9/7SO//u4rX/7O+fnd3/i1T//kT3zzL2+I7xfO3POKlY5IMXrN8KwTdqXCx8qFdl++G1fzPE5jc8OWfHgsdY8P+6UwN6lrO/RekZAbNt+N4wtxsD8mi5dta8zkFzzQr+SK1+AjkFg5GLESEiVW3jv8nc/87E/d/fCTdz/85L30t4ui+O69e9//u797/eNX7n74yc9v//zLT25bfoeJlbaayVlneSs1r1iZJcLWzi4Zu7uIlX7bYcpYmacX4vRY2psTF7FyBYpYOT5iJSRKrPzCR/7dnZ+7+OVf/rdlvffd7/7gnXf+9uMfK3/84od+8dM/+Y8tv8PGWHmtGbgTftWbFy+kqZAq8t24Gdxr/zjqZ9Dyr+e1JIrqz6pLEYYLmyYpzeieSfWnOb1kb7/4Tn011TfrC4os+aAZnazekO+2fTbtv4VVUIcyfdZXfPOFNKs2fpLdLbLOVVZWStpQQoyzrek1aThXi5WO3WefT/O63EPZ9lza5u86EiLpSO7cSvoev5TEwhuqDN1rx+ml/1IYPiUfQvpBaPz9VY5216FrPK5SZccZfqP9f33q/Wi9+ta5Bcx/TPRf5+7fccNBqLbHuEOP01673rSt1L8Dplcsf2e6fyVNB1i/PwXyL13nn1OptBXp+0shv1j/VZR+tcU/mx6/WcTKofjyRsiUWPnyTvLpH3/09qPvv/3o+x88f6Moiq8f/e/yx9uPvv+vH33/J3/sR5UztD1Wiv/F3PyX9LWk/ZNxnMbNn6HjNKn/WGeXIlfHZ3lFtny+V5einS/VN/jM5FrS/EVuL9O5lqh/mMwN0M467V836WSjr6D011B7RY6V7celjda5vtoJqdwL5VmkXeWOGYor1bGhpOa1myhLDLFS233W+VheV6KnYa2F+etHgnVxzq1k2eNCKqo73nrtOOP+UlZQ+5ShVZ29lcadaOsAsx5X0oY1/0b7/fq0262z402fp3XRxqPU+9B19VYadmiPXW9qsPvvgKF8fiXdB5jPnwLrlun8m+xckV6/FNoeF2bYHoG2ZluKWDlAlePpqoRIHQT/n//lsxd/6ku/9KGv/a8/eu8HP3jn859/77vfffXDv/KlX/rQl37pQy///L86/emfsJ+W5PN6/V+67X9Fp8dq34P8o/afsI7eSmEO+lLEhpnf4DMT5S+ape/E0gBzg9WP2/+4R3KXm7W3UpuVz/qqi2uWZfp39wx9NpTQPPsBYDiuPOcjJir1dUMoUWKldCSYd1DXVrIeos0bmoO5144z7i/hl8J66MqHkFes1Haicuh6HFfKEKT6G+396yPOp2NY03HXl7ho8wr2OXR9B8H1Y6Zr11sbrOxE/ZXOo05er44DzONPgc+W8VqQ+/h0/lLoe9wdK706vImVQCBKrHzr5b/41Ad+/MEf/o+iKL72R3/4t7sf+d43vv6d8/Pzp3/r7oef/OzP/cxrv/Nx+2lJi5X6L7MtVeS7cWT8r0yPWNkvl/jPxDtWdvzNcsdK10mi+svbN1Z2ru9C5xJ9hp7nZtPrQ2Klc/6DeiudsVLPH71iZXWNoHCLdK8dZ9xfcqy0fko4hILESo/jSj6pe5zgrb96CnsvnTlkGP+YDI6Vrm3oCIu+u97cYH0n2l7Rm+H3t8uw2fvGStOW8T2SHcen85eCWAnMmf6AoVf+82985b//3tf/9EZ5487ffvQ3//7lz733ve+9nv72X//sB37wnS/aT0v6ILg43Km/KAyCC7/5eXqhR2+leSnq6J72Bp+Z2M5D7d/utO4Z0htg/3OvX3Elvz/fTTP5g8rjM8SBp/qqKXmjda5vn3NJ9wytG8q0prarIKRyDYIL87G8bunoNc/fcCR0zbZfrCzy3Ti+lMTiJvLfccb9pV5gqn5KP4TEJgmHU49Y6XdcGf97wLKO9l8f9eIQ6T2mDSLP07pov1hpPQacg+CGHeq9640NNv0d0Har7ajr/NtlPMC8/hR4bJmuBVmOT+9fCm2PewyCy0ed4UAiVgJh6LHy+++8/PKTj5/+1D/5QvILrz7571/9lf/4pV/+0Bd/7YnTi//07Vz6hex+bqXxmv32RfGWnfK/XKMoiuLkUo/eSstSpIEzwxt8ZmL80yy+07ma+obyvmWnvfBc+jurbJzjNI6S5JJhVj7r2+Nc4ryfoLk/QN9QtjVtB7bke7bkLdB1l4D19Z53gutbxjjbXrFS2ePKJaS9dpxxf+mX3BmOf/MhFO/mdazUfn8NO1FaEY/jSrtoVTlovX59skR9XGX1iu3iQnWetj8mnrHSemgpu1X6i2Tcob673ryt9J2ov2I56jr/dhkPMJ+D3LhlvP4mqztUWpGevxTKHu+IlaajTitiJRCG7csbH2S//5l/+c8++WM/+lePvu/2pZ++u//x77/zsuU8t0D5DpdQejmS4maXx3MrRy45JbPjhpblPxLmXOx6v5p+yxArgTBssbIpZdQ7xJ8Py123VO8tySnKXJ3fsjNqma6WY8cNqDy9sGLbjV3vW9NvmbWJldydjYl1xsrwJQxqzOKsv6o1/R9iqrPKP/HybmLHbUSx6/vU9FtmbWJlURQ8SxJTmiBWUhRFUdScar1iJd98g+kQKymKoqgNL2IlEAaxkqIoitrwIlYCYRArKYqiqA2vNYuVRZZw2w6mMd9YKTy0Wap+zySqHgjHZfKhiw1LUdT61LrFyqKobtzhzh2MbL1jpfC1aStTmfC4Ycejj/1Lfup1mAq1YaWV5QmmFEVNVOsWKxkFx1TmGytt1SdWLvnJhUt9KIb5y6yHNalrO/RekVAbVpyP/t0qFEVR49SaxUpSJSZDrFygiJWLrqY4n1XsWqYoaj2KWAmEsXCs1L8i9jiN5aygfRe2/HXM15JqAFT+UfqCimvSyHAbK/V5tiUMsF7K1GUZW363+vbbrHpge5K1X2CtzV/4eHwpEVa5Dr7CEtUxaFezhfcosdLwqWaAO4ouZVKTpOQtpLdrSflN3O189E917KlU2rC27//VZ2Jov/O7uSmKokYqYiUQxmKxUv72xexSlTPaDsUmK1xL2gslmxfL2z6a8CT/2MbKa4mQV7JETD/6PKVSUoscH00tL4TcWQbKsv9M/RI2baFCH2qWmNZOWkRHs+sWiks0fcrQqs7tcC2RVqqcp/gpnz0lb9ikjrDyZpQTs3mtubaSoqg5FLESCGOhWKmOR2shssk9dZ9fJPVXKRlI/lH8rLiU5kfzPKUWWjvDOlteOP5tbHDzhiYOWtbOo9n1DIXIaP5U2f8nNswnVorxTouVXntKHQSXO01NFypY1lqaT5tKKYqiRq31ipV8eSOmEzpWVpGljAt5eqEKDeYLIheOlV39W31iZRMKh8XKu+XKChcI2mOlV7ecFiutnyq7EvV+R+N28IiV3XtKmGG+G0fiv+2x0tR+OZ4aNzJFUdTSa21iZTUERFclphJ4ELyJDvluHF9KYjGWiQPZzv68Zg6GQfDjNJYuAdTmKZX90j1by4fHSm2Vj9O4vbU5Ty9E5jF9W/+cPgiufSrfTTOlJUKThCc09YiVXntKmKGw0y3reC2tO1b1p81I+wAAA5xJREFUtaa3kqKoOdTaxEpgYku4ZacsKVQVhfHGDs9YKQ6hXkhTObyq85TKeUeI/ZYd31hZD/4KV1UKfXLHaRwlySVtEd3NrpcoZyzTp9prE6X82tzzdCHNledWGmOlvCLde0q/aDWKoihOLsXSpbHyirvbrx4/FEVR4xWxEghj9R4wNOOSh3S5tZmiKGo1ilgJhEGsDFbqfdnESoqiqNUoYiUQBrEySJWDuXKIJFZSFEWtRhErgTCIlRRFUdSGF7ESCINYSVEURW14ESuBMIiVFEVR1IYXsRIIY3t7+xoAABuMWAmE0fd3CQCANUOsBMJgEJyiKIra8CJWAmEQKymKoqgNL2IlEAaxkqIoitrwIlYCYRArKYqiqA0vYiUQBrGSoiiKmqhuXn/i8SeeuHp7jE+5ilgJhEGspCiKWut66ebTjz/xRFVP33wp3JxvXq+yXZnzqrp++25R3C1uX61euX5TfnNb929eHtCeYZ9yF7ESCINYSVEUtdb10s2nL9+8X/775vUm9gUoMVY2i6gnVWnypZtPl0s0xMrb14fE3GGfchexEgiDWElRFLXWJcbKOpPdf/bpJ65ev14PJTc9i08/e7/6iNj1qPwozPl6+X49VrZVp8Dmze3r0kLvP/u00t+pNNLzU1V7hN7Z+88+3c6hSbfSShErgTCIlRRFUWtdSm/l5Zv3qzTWprcqTdbjy7ev1iPXd4virvqjoRyx0idxlu2p39b8W2yk/6f0HlljrJRXilgJhEGspCiKWuuSrq0UOwLLpHX/5uUnhCsjn7h+s+oCrLOm+qOhxGsrpRDpHrBup8oh7/b1x6/fVuKg96duX1WbaoyV8koRK4EwiJUURVFrXdIgeFVKrDR2Rt6+Ko0sKz9KZe6SvH39cXc355SxUl4pYiUQBrGSoihqrasjVkpDybefvXn/bnH7ZpM4n775kvqjYRF6rGzu1HGVxyC4M1Z2D4LfvHnzJbF5929eri8nlVaKWAmEQaykKIpa6+qKleI4ePswoHJEW3l+kO1RkWqsVAbWbflSGiJvbhuSkqIzVho/VYj38agD/U/ffFZ7KNLV2wyCA6EQKymKoqgNL2IlEAaxkqIoitrwIlYCYRArKYqiqA0vYiUQBrGSoiiK2vAiVgJhbAMAsPF6nTqJlQAAAAiAWAkAAIAAiJUAAAAIgFgJAACAAIiVAAAACIBYCQAAgACIlQAAAAiAWAkAAIAARouV/x+PHQgDQ2Jx/wAAAABJRU5ErkJggg==" alt="" />

参考资料

https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html

https://dzone.com/articles/interface-default-methods-java

http://howtodoinjava.com/java-8/default-methods-in-java-8/

http://ebnbin.com/2015/12/20/java-8-default-methods/

JAVA 8 默认方法-Default Methods的更多相关文章

  1. Java 8 默认方法(Default Methods)

    Java 8 默认方法(Default Methods) Posted by Ebn Zhang on December 20, 2015 Java 8 引入了新的语言特性——默认方法(Default ...

  2. Java 8 默认方法和多继承深入解析

    以前经常谈论的Java对比c++的一个优势是Java中没有多继承的问题. 因为Java中子类只能继承(extends)单个父类, 尽管可以实现(implements)多个接口,但是接口中只有抽象方法, ...

  3. Java 8 新特性-菜鸟教程 (4) -Java 8 默认方法

    Java 8 默认方法 Java 8 新增了接口的默认方法. 简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法. 我们只需在方法名前面加个default关键字即可实现默认方法. 为 ...

  4. JDK1.8新特性(一): 接口的默认方法default

    前言 今天在学习mysql分区优化时,发现一个博客专家大神,对其发布的文章简单学习一下: 一:简介 我们通常所说的接口的作用是用于定义一套标准.约束.规范等,接口中的方法只声明方法的签名,不提供相应的 ...

  5. Java 8 默认方法

    转自:https://www.runoob.com/java/java8-default-methods.html Java 8 新增了接口的默认方法. 简单说,默认方法就是接口可以有实现方法,而且不 ...

  6. Java中默认方法

    默认方法是JDK8新特性,指的是接口也可以提供具体方法了,而不像以前,只能提供抽象方法,Mortal 这个接口,增加了一个默认方法 r,这个方法有实现体,并且被声明为了default,如以下代码: 这 ...

  7. java 接口默认方法的使用

  8. Java 8函数编程轻松入门(三)默认方法详解(default function)

    default出现的原因 Java 8中对API最大的改变在于集合类,Java在持续演进,但是它一直保持着向后兼容. 在Java 8中为Collection接口增加了stream方法,这意味着所有实现 ...

  9. 30分钟入门Java8之默认方法和静态接口方法

    30分钟入门Java8之默认方法和静态接口方法 前言 上一篇文章30分钟入门Java8之lambda表达式,我们学习了lambda表达式.现在继续Java8新语言特性的学习,今天,我们要学习的是默认方 ...

随机推荐

  1. asp.net后台注册js的四种方法

    1. 用Response.Write方法 代码如下: Response.Write("<script type='text/javascript'>alert("kel ...

  2. C语言写的流氓关机程序及破解

    记得大二刚开始接触电脑的那个时候,偶尔会弹出一个强制关机的窗口,当时没有办法,如下: 现在看来只是一个小程序而已,用C语言编写的: #include<windows.h> int main ...

  3. C#获取 URL参数

    假设当前页完整地址是:http://www.test.com/aaa/bbb.aspx?id=5&name=kelli "http://"是协议名 "www.te ...

  4. 通用easyui查询页面组件

    easyui查询页面组件使用指南 本组件开发需求:信息系统的查询页面基本是包括:搜索区域,列表显示区域,按钮条. 1.录入一个查询语句(如:select * from Strudents),录入列表显 ...

  5. Tomcat Server Timeouts属性的设置

    在启动Tomcat Server时,经常会出现启动时间过长的错误,如下图所示(为了方便截图,Start Timeout被设置为5秒钟,一般为45秒钟). 双击Tomcat v7.0 Server at ...

  6. MySQL Information Functions

    Table 12.18 Information Functions Name Description BENCHMARK() Repeatedly execute an expression CHAR ...

  7. C#实现WebService服务 项目完整总结

    先说一下这个项目做了什么.先介绍一下背景(备注一下,每次项目发生更改之后,要进行clean 和rebuild两个操作,否则最新的更改保存不到exe文件中,这样上线后的系统还是执行得原有的已编译过的程序 ...

  8. 「Unity」与iOS、Android平台的整合:2、导出的Android-Eclipse工程

    谢谢关注~由于博客园的写字有些蛋疼,已经搬迁到简书了 这是本篇文章的最新连接

  9. 【转】Linux重定向操作符

    Linux重定向操作符 功能描述 > 将命令输出写入文件或设备,而不是命令提示符或句柄,清空原有文件然后写入 < 从文件而不是从键盘或句柄读入命令输入 >> 将命令输出添加到文 ...

  10. jQuery Transit 过渡效果

    jQuery Transit 使用 CSS3 的新特性来实现过渡效果,比默认的.animate方法要顺畅得多. 因为使用 CSS3 进行过渡效果,所以对不支持 CSS3 的浏览器效果有所下降. 语法和 ...