JAVA之抽象类与接口的区别

简介:

抽象类:用abstract修饰的类称为抽象类。
  它可以有构造器,但是不能构造对象,抽象类中的构造器,在构造具体子类对象时调用,抽象方法决定抽象类,抽象类中可以没有抽象方法,具体父类型可以作为引用类型的声明;抽象父类型也可以作为引用类型的声明;如果一个具体子类继承抽象类,那么就要实现抽象父类中的所有抽象方法;在子类中重写父类方法时,访问级别要大于等于原有访问级别;
  接口:是一种统一的标准,是一个特殊的“模版”
  接口中只能有:1、常量2、抽象方法;在定义方法时,具体类可以做形参,抽象类可以作形参,接口可以做形参;无论谁做形参,实参一定是具体类对象!(具体父类的具体子类;抽象类的具体子类;接口的具体实现类;)类可以在继承一个父类的基础上,实现多个接口;
  抽象类与接口的异同:
  相同处:1、不能构造对象2、都可以定义抽象方法3、设计的目的是为了被继承或被实现4、与子类或实现类的关系都属于is-a,可以用抽象类或接口的引用来作类型声明,进而统一调用具体子类或具体实现类;
  不同处:1、抽象类中可以有构造器,但接口中没有2、无论继承链的长短,继承链上所有的类都是同一类事物;同一个接口中实现类,可以没有任何关系。3、抽象类中可以有抽象方法,也可以有具体方法,但接口中的方法都是抽象方法;4、顶层抽象类是Object类的子类,它继承了父类的所有成员;而接口中则除了自定义的的成员外,没有额外数据;接口是“轻量级”的抽象类,或者说是100%的抽象类;5、抽象类编程时,内聚性低,耦合度高;接口编程,内聚性高,耦合度低(好)6、接口可以实现多继承,一个接口可以继承多个接口。但是抽象类却不能,只能单继承。一个接口不能实现另外一个接口。

最新内容请见作者的GitHub页:http://qaseven.github.io/

相关文章
|
8天前
|
安全 Java
【JAVA】在 Queue 中 poll()和 remove()有什么区别
【JAVA】在 Queue 中 poll()和 remove()有什么区别
|
8天前
|
Java API
【JAVA】final、finally、finalize 有什么区别?
【JAVA】final、finally、finalize 有什么区别?
|
8天前
|
Java
【JAVA】throw 和 throws 的区别?
【JAVA】throw 和 throws 的区别?
|
4天前
|
存储 Java
java IO接口(Input)用法
【5月更文挑战第1天】Java的`java.io`包包含多种输入输出类。此示例展示了如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着创建一个字节数组存储读取的数据,调用`read()`方法将文件内容填充至数组。然后将字节数组转换为字符串并打印,最后关闭输入流。注意,`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
14 2
|
5天前
|
NoSQL Java API
java一行代码实现RESTFul接口
Spring Data REST是构建在Spring Data之上的库,可自动将repository转换为REST服务,支持JPA、MongoDB、Neo4j、GemFire和Cassandra。无需手动创建Service和Controller层。要开始,需配置JPA数据源,创建实体类和Repository接口。快速实现REST接口,只需引入spring-boot-starter-data-rest Maven依赖,并在Repository接口上添加@RepositoryRestResource注解。
|
5天前
|
Java
Java中 a+=b和a=a+b有什么区别?
Java中 a+=b和a=a+b有什么区别?
|
5天前
|
Java 开发者
Java中三种Set的实现类的用法和区别
Java中三种Set的实现类的用法和区别
|
6天前
|
Java 程序员 数据格式
关于Java抽象类和接口的总结和一点个人的看法
关于Java抽象类和接口的总结和一点个人的看法
|
8天前
|
存储 安全 Java
【JAVA】concurrentHashMap和HashTable有什么区别
【JAVA】concurrentHashMap和HashTable有什么区别
|
8天前
|
安全 Java
【JAVA】线程的run()和start()有什么区别?
【JAVA】线程的run()和start()有什么区别?