关于类和接口关系

2019.7.30更新:以前的整理可能难于理解,现在再整一次(针对jdk1.8及以上)。

接口:

不是一个类(也没有继承Object),不能实例化,但是可以声明一个未初始化变量。不能有私有的成员变量或者方法。(参照菜鸟教程)

·  变量默认是public static final 修饰,方法默认是public abstract;

·  default修饰的方法必须有方法体,并且该接口的实现类非必须实现defualt方法。static方法必须有方法体

·  如果该接口(A)的实现类(AA)没有实现A中所有的public方法,那么AA一定为abstract抽象类。之后在AA的子类或者实现类中,需要继续重写AA 没有实现的方法。

抽象类:

除了不能实例化,其余跟普通的类没有区别。不同于接口,正常类可以实例多个接口,但只能继承一个类。

· 抽象类中的抽象方法一定是public abstract

· 抽象类中不一定有抽象方法



以前的:

1.本质上来讲,接口也是一种类,是一种特殊的抽象类,但是这个抽象类只包含常量和方法的定义,没有方法的实现和变量。

2.接口里面封装了很多方法,当一个类要实现一个接口,重写情况有两种:一.子类是抽象类,有选择地重写接口里面的方法;二.子类是非抽象类,必须全部重写。

3.一个类可以继承多个接口,但是只能继承一个抽象类。类和接口没有必然联系。

4.抽象类能够定义非 static final 的属性(field),而接口不能。接口的属性都是static final的。抽象类能够定义非public方法,而接口不能。接口的方法默认都是public的,因此继承接口的类的方法权限不能比public小(即只能是public)

接口中的方法默认为public abstract,属性默认为public static final。接口中的方法不能有实现,Java中类只支持单继承,而接口可以支持多继承。

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,355评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,906评论 18 399
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 4,930评论 0 5
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 9,711评论 0 16
  • 导读:2016年结束了,炒得沸沸扬扬的小目标,到此时此刻你实现了多少,还亏欠多少?这是一个让人值得反思的事情,职场...
    橙飞飞阅读 1,235评论 0 0