Java抽象类和接口

abstract 的理解

abstract(抽象)可以修饰类、方法
如果将一个类设置为abstract,则此类必须被继承使用。此类不可生成对象,必须被继承使用。
abstract 和 static 不能放在一起,否则便会出现错误。(这是因为static不可被覆盖,而abstract为了生效必须被覆盖。)
abstract 和 final 不能放在一起,否则便会出现错误。

抽象类的意义

为其子类提供一个公共的类型 封装子类中得重复内容 定义抽象方法,子类虽然有不同的实现 但是定义是一致的

接口特性

接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。

接口的意义

提供一个规范,要求类必须实现指定的方法。
解决 Java 中的单继承问题,可以用接口来实现多继承的功能,简单化多重继承中继承树的复杂程度。
增强程序的扩展性。

抽象类和接口的区别

抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
接口中不能有静态代码块以及静态方法(用 static 修饰的方法),而抽象类中可以有静态代码块和静态方法。注意:Java 8的新特性允许接口中存在静态方法。
一个类只能继承一个抽象类,而一个类却可以实现多个接口。
接口中不能有构造函数和main方法;而抽象类中可以有。

接口与类的区别

接口不能用于实例化对象。
接口没有构造方法。
接口中所有的方法必须是抽象方法。
接口不能包含成员变量,除了 static 和 final 变量。
接口不是被类继承了,而是要被类实现。
接口支持多重继承。

接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concreteclass)?

接口可以继承接口。但是要使用extends,而不是用implements。
抽象类可以实现接口。
比如java.util中的AbstractCollection类就是实现的Collection接口。
抽象类可以继承实体类。
eg:
interface MyInterface {}
interface AnotherInterface extends MyInterface {}
class EntityClass {}
abstract class AbstractClass extends EntityClass implements MyInterface {}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,804评论 18 399
  • 写在前面 本文背景为JDK 1.8 ,为个人学习笔记整理,略有凌乱。如有纰漏,请务必指出。 抽象类 抽象类即是声明...
    Van96阅读 381评论 0 1
  • 一 抽象类在java中用abstract关键字修饰的不能被实例化的类称为抽象类,抽象 类中可以有抽象方法也可以有非...
    安安静静写代码阅读 233评论 0 0
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,147评论 0 62
  • 1.抽象类概念抽象类必须声明为public,protected,缺省下默认为public,如果不能继承就没有了意义...
    camlboy阅读 419评论 0 0