接口为类和接口有什么不同能代替实现类?

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

1. 直接new一个实例,这样肯定知道用的哪个实例

2. 定义接口类型的变量用某个实例去初始化。。这样也是肯定知道用的哪个实例一般我们用第二种方式有一个好处如果以后要改动,那么只需要修改其引用的实例,改动较少!舉个例子:A接口A1,A2A3实现A接口,有一个eat方法A1:吃饭,A2:吃鱼,A3:吃肉需要得到"吃肉"那么 A a = new A3();需要得到"吃饭",那么 A a = new A1();

二、看代码发现的例子:

在 java 8 之前接口与其实现类之间的 耦合度 太高了(tightly coupled),当需要为一个接口添加方法时所有的实现类都必须随之修改。默认方法解决了这个问题它可以为接口添加新的方法,而不会破坏已有的接口的实现这在 lambda 表达式作为 java 8 语言的重要特性而出现之际,为升级旧接口且保持向后兼容(backward

  • 接口可以被类多实现(被其他接口多继承)抽象类只能被单继承。
  • 接口中没有 this没有构造函数,不能拥有实例字段(实例变量)或实例方法无法保存 状态state),抽象方法中可以
  • 从设计理念上,接口反映的是 “like-a” 关系抽象类反映的是 “is-a” 关系。
1、当使用继承的时候主要是为叻不必重新开发,并且在不必了解实现细节的情况下拥有了父类我所需要的特征它也有一个很大的缺点,那就是如果我们的类已经从一個类继承(如小程序必须继承自 Applet 类)则无法再继承 Thread 类,
2、java只能单继承因此如果是采用继承Thread的方法,那么在以后进行代码重构的时候可能会遇到问题因为你无法继承别的类了,在其他的方面两者之间并没什么太大的区别。
4、使用 Runnable 接口来实现多线程使得我们能够在一个類中包容所有的代码有利于封装,它的缺点在于我们只能使用一套代码,若想创建多个线程并使各个线程执行不同的代码则仍必须額外创建类,如果这样的话在大多数情况下也许还不如直接用多个类分别继承 Thread 来得紧凑。

本站是提供个人知识管理的网络存储空间所囿内容均由用户发布,不代表本站观点如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话: 与我们联系

我要回帖

更多关于 接口 的文章

 

随机推荐