两者相似之处在于:抽象类和接口都不能被实例化,两种都是java实现抽象的方式。不同之处分两个方面:
一、语法层面
-
抽象类可以有构造方法,接口中不能有构造方法;
-
抽象类中可以有普通成员变量,接口中没有普通成员变量(默认public static final );
-
抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的;
-
抽象类中的抽象方法的可以是public,protected的,但接口中的抽象方法只能是public的;
-
抽象类中可以包含静态方法,接口中不能包含静态方法
-
抽象类中可以包含任意访问权限的静态成员变量,但接口中定义的变量只能是public static final类型。
-
一个类可以实现多个接口,但只能继承一个抽象类。
二、思想层面
抽象类 在Java中体现了一种继承关系,要想使得继承关系合理, 抽象类 和派生类之间必须存在“is-a”关系,即
父类和子类在概念本质上应该是相同的。对于interface来说则不然,并不要求 interface的实现类和interface定义在概念本质上是一致的,仅仅是实现了interface定义的契约(模版)而已。
总结来说:
抽象类与子类为"is a"关系,它抽象出事物的共同本质特征,可单一继承;
接口与实现类为"like a"关系,它定义并规范了个性化的功能特征,可多重继承(实现)。
分享到:
相关推荐
抽象类和接口的区别 在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持...
本项目主要包括项目开发环境搭建、不同功能的类的设计、抽象类的设计、接口的设计、及其继承抽象类重写和接口实现类等具体功能的实现。 ●工程项目搭建与游戏初始化功能实现(2学时) ; ●动物城成员列表与动物信息...
抽象类和接口实验报告
Java中的类、抽象类和接口的区别和联系
此书对于你学习Java抽象类和接口有非常大的帮助
抽象类和接口 区别分析抽象类和接口 区别分析
在Java中,可以通过两种形式来体现OOP(Object Oriented Programming,OOP,面向对象程序设计)的抽象:接口和抽象类。 这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换...
简单介绍了抽象类和接口
在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...
c# 中抽象类和接口的学习
Java源代码:抽象类和接口 Java源代码:抽象类和接口
C#中抽象类和接口的区别.txt
Java实验7抽象类和接口.pdf
学习java的抽象类和接口,入门抽象类和接口必须学会这些内容
抽象类的基本概念 抽象类是Java中一种特殊的类,它不能被实例化,只能被继承。...抽象类和接口都是用于定义通用属性和方法的,但抽象类可以有构造方法,接口不能有。抽象类只能单继承,接口可以实现多继承。
Java抽象类和接口和继承之间关系 Java抽象类和接口和继承之间关系
面向对象和抽象类和接口的理解 面向对象和抽象类和接口的理解 面向对象和抽象类和接口的理解