接口和抽象类的区别是什么?
抽象类是用来捕捉子类的通用特性的,而接口则是抽象方法的集合;抽象类不能被实例化,只能被用作子类的超类,是被用来创建继承层级里子类的模板,而接口只是一种形式,接口自身不能做任何事情。
其次,抽象类可以有默认的方法实现,子类使用extends关键字来继承抽象类,如果子类不是抽象类的话,它需要提供抽象类中所有声明方法的实现。而接口完全是抽象的,它根本不存在方法的实现,子类使用关键字implements来实现接口,它需要提供接口中所有声明方法的实现。
抽象类可以有构造器,除了不能实例化抽象类之外,它和普通Java类没有任何区别,抽象方法可以有public、protected和default这些修饰符。而接口不能有构造器,是完全不同的类型,接口方法默认修饰符是public,不可以使用其它修饰符。
接口是引用类型的,和抽象类的相似之处有三点:
1、不能实例化。
2、包含未实现的方法声明。
3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)。
接口
1.接口只提供方法规约,不提供方法体;
2.接口中的方法不能用关键字修饰;
3.接口里不能有接口和变量;
4.接口里的方法在子类中必须全部实现;
5.接口可以实现多重继承;
抽象类
1.抽象类可以从接口继承;
2.抽象类中的实体方法在子类中不可以重写,只可以被引用;
3.抽象类中的抽象方法不可以有方法体,抽象类中的抽象方法在子类中必须重写;
4.抽象类中的虚方法在子类中可以选择性的重写;
接口与抽象类的异同
1.抽象类的抽象方法和接口内的方法,在子类中必须全部被实现;
2.抽象方法和接口中的方法都不可以有方法体;
抽象方法与虚方法的异同
1.抽象方法所在的类必须是抽象类,虚方法可以在任何类里;
2.抽象方法必须被重写,虚方法的重写有选择性;
3.抽象方法不可以被子类调用,虚方法可以被子类调用;
4.抽象方法不可以有方法体,虚方法必须有方法体;
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!