Java中的接口(interface)和抽象类(abstract class)
来源:互联网 发布:批量登录软件制作 编辑:程序博客网 时间:2024/06/05 17:42
1. 接口(interface),接口被用来建立类与类之间关联的标准.一般认为,接口的主要作用是弥补Java在多继承上的缺陷。概括来说,行为规范用接口。有人还认为,接口是抽象的抽象类。
2. 抽象类(abstract class),只要类中有一个抽象方法,此类就被标记为抽象类。概括的说,通用功能用抽象。实际上抽象类除了被继承之外没有任何意义。抽象类用来做模板的设计,用来对事物进行高度概括。
两者的目的是不一样的,接口用来定义某一事物的行为规范,一般被用来作为某一函数参数的输入类型或输出类型。而抽象类是用来提高代码间的复用性的。所以用接口来编程一般的套路如下:
1.定义接口
2.定义一个实现了该接口的抽象类,把通用方法、辅助方法都在抽象类中实现,把变化的部分作为抽象函数留给子类去实现
3.子类继承抽象类,实现抽象方法,从而实现接口。一般不提倡一个类不继承任何抽象类而直接实现一接口
区别:
1.抽象类用来继承,接口用来实现。Java支持多实现,但不支持多继承。
2.抽象类中可以有私有变量和方法,接口中所有变量和方法都是public的。
3.抽象类表示的是"is-a"关系,接口表示的是"like-a"关系。
4.抽象类至少有一个抽象方法,可以有具体方法,接口中所有方法都是抽象的(public abstract类型)。
5.抽象类中变量可以修改(friendly类型),接口中变量都是public static final类型的,必须给初值并且不能被修改(一般不在接口中定义变量)。
6.继承抽象类必须重写所有抽象方法,普通方法可以重写也可以不重写,实现接口必须实现所有方法。
最后:其实接口是抽象类的延伸,可以将它看做是纯粹的抽象类,就是说接口比抽象类还抽象,还有设计接口的目的就是为了实现C++中的多重继承,不过java团队设计的一样更有趣的东西来实现这个功能,那就是内部类(inner class)。
- Java 接口(interface)和抽象类(abstract class)区别
- Java 接口(interface)和抽象类(abstract class)区别
- interface,abstract class,abstract interface Java中的接口,抽象类和抽象接口的异同
- Java中的抽象类和接口 (Abstract Class and Interface in Java)
- Java中的接口(interface)和抽象类(abstract class)
- java 接口(Interface)与 抽象类(abstract class)
- java 接口(Interface)与 抽象类(abstract class)
- 抽象类(abstract class)和接口(interface)分析
- 抽象类(abstract class)和接口(interface)
- 接口和抽象类(abstract class and interface)
- PHP中的 抽象类(abstract class)和 接口(interface)
- PHP中的 抽象类(abstract class)和 接口(interface)
- PHP中的 抽象类(abstract class)和 接口(interface)
- PHP中的 抽象类(abstract class)和 接口(interface)
- PHP中的 抽象类(abstract class)和 接口(interface)
- PHP中的 抽象类(abstract class)和 接口(interface)
- PHP中的 抽象类(abstract class)和 接口(interface)
- PHP中的 抽象类(abstract class)和 接口(interface)
- JAVA反射机制
- 特别详细好懂的一篇文章:s3c2440 -linux-LED驱动
- JavaScript中的模块化:封装,继承
- 四面体体积 poj2208 hdu1411
- java操作csv文件(读、写)
- Java中的接口(interface)和抽象类(abstract class)
- epoll使用详解
- gcc 编译 c++
- protobuf&restlet
- db_name和db_unique_name的区别
- [MFC]选择目录对话框和选择文件对话框
- Linux环境下MySQL数据库大小写区分问题
- Linux内核配置
- Spring中ClassPathXmlApplicationContext类的简单使用