美文网首页
关于类和接口关系

关于类和接口关系

作者: Kitlen | 来源:发表于2017-06-09 20:02 被阅读0次

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中类只支持单继承,而接口可以支持多继承。

相关文章

网友评论

      本文标题:关于类和接口关系

      本文链接:https://www.haomeiwen.com/subject/atdjfxtx.html