刘小爱v▲【自学Java】17什么叫接口?( 二 )


现在动物园想增加一个功能 , 就是想知道每个动物的名字叫什么?
如果把name()方法设定成抽象方法 , 那就是每个动物必须得告诉我你的名字 , 但问题是有的动物暂时还没名字 , 怎么办?
所以 , 如果不是强制性的要求 , 就可以制定成默认方法 。 什么时候有需求了重写就好 , 也可以一直不重写方法 。
现在有一只兔子 , 没有名字 , 那就用接口的默认名(动物) , 突然有一天想给它取了一个新名字 , 叫小白 , 怎么办?重写默认方法就好了 , 重写以后它的名字就叫小白了 。
刘小爱v▲【自学Java】17什么叫接口?
文章图片
说到这 , 我突然又想起来了现实里的一个例子:
我们登入很多网站 , 一开始都会有一个默认名 , 什么qq用户XXX , UC用户XXXX , 这应该就是相当于接口里的默认方法吧?我们自己制定用户名 , 修改用户名 , 这个过程不就是在重写默认方法么?
2.静态方法
这个比较容易理解 , static这个关键字前面就学习过 , 可以用类名.方法名直接调用 。
在接口中 , 就是接口名.方法名直接可以调用 。
接口有个特点 , 就是接口里的静态方法只能用接口名调用 , 其他都不行 。
刘小爱v▲【自学Java】17什么叫接口?
文章图片
四、抽象类
在接口的抽象方法中 , 提到了一个概念 , 叫抽象类 。
这个抽象类又是啥呢?
抽象类:有抽象方法的类就叫抽象类 。 如果一个类包含抽象方法 , 那么该类必须是抽象类 。
它和接口很类似 , 也是子类必须要重写它的抽象方法 , 不然不行 。
父类和子类的关系也就相当于接口和实现类的关系 。
相同点;
都不能创建对象 , 也就是没法实例化 , 只能通过子类/实现类来创建对象 。
子类/实现类必须重写抽象方法 。
不同点:
不同的引用数据类型 , 一个是类(class) , 一个是接口(interface)
子类只能继承一个父类 , 但是子类可以实现多个接口;反过来就是一个抽象类只能有一个子类 , 但是接口能有多个实现类 。
接口的设计具有更大的可扩展性 , 而抽象类的设计必须十分谨慎 。
可拓展性是什么意思呢?
一个类只能继承一个父类 , 如果有一天想拓展一个新功能 , 那么只能改这个类 , 这个抽象类一改 , 它的所有子类都得改 。
那么问题来了 , 我只有一部分子类需要这个新功能 , 其他的不要呀 , 用抽象类的话 , 不要都不行 。
用接口的话 , 拓展一个新功能 , 重新再写一个新接口就好了 , 哪些类需要新功能 , 实现这个接口就好了 , 不用每一个类都得改 。
总结:
刘小爱v▲【自学Java】17什么叫接口?
文章图片


推荐阅读