java 抽象类和接口的差别

??

语法层面上:

1)抽象类能够提供成员方法的实现细节。而接口中仅仅能存在public abstract 方法。

  2)抽象类中的成员变量能够是各种类型的。而接口中的成员变量仅仅能是public static final类型的。

  3)接口中不能含有静态代码块以及静态方法。而抽象类能够有静态代码块和静态方法;

  4)一个类仅仅能继承一个抽象类。而一个类却能够实现多个接口。

补充:抽象类中可以不提供abstart方法,相同该类也不可以实例化

设计层面上:

抽象是继承是“是不是”的关系。接口实现是“有没有”的关系。不如说有个抽象类Door(门),一个门类的继承子类WoodDoor(木门)。这个就是抽象类的继承。

比方有个Bird(鸟)类。有一个(Airplane)飞机类,它们都有一个方法fly()方法。这里就没有办法用抽象类来解决问题了,要用接口,由于显然鸟和飞机不是子类和父类的关系,它们仅仅是有共同的行为方法,它们都有fly方法,这个是“有没有”的概念。

时间: 2024-10-11 17:52:14

java 抽象类和接口的差别的相关文章

java抽象类和接口

1.抽象类 抽象类在概念上描述的是抽象世界,抽象类刻画了公有行为的特征,并且通过继承机制传送给它的派生类.抽象类使用关键字abstract 修饰,语法如下: abstract class 类名{ 类体; } 抽象方法是指在抽象类中某些成员方法没有具体的实现,只有方法声明.抽象方法使用关键字abstract 修饰,格式如下: public abstract 返回类型 方法名([参数列表]); 抽象类和抽象方法的具体规则如下: 1.用abstract 关键字修饰一个类时,该类叫做抽象类,用abstr

JAVA学习经验--总结JAVA抽象类和接口

* --总结JAVA抽象类和接口  * 1.抽象类:  *             1>抽象类可以修饰方法,修饰类,但不能修饰属性,不能被实例化  *             2>抽象类可以被继承,只能是单继承,继承抽象类必须实现抽象方法  *             3>抽象类不能被static ,fina,private一起修饰  *             4>抽象类是有多态性的  *  * 2.接口:  *             1>接口是一种特殊的抽象类,不能被实

浅析Java抽象类和接口的比较

abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract class和interface的选择显得比较随意.其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解.对于设计意图的理解是否正确.合理.本

JAVA抽象类和接口的深入探讨

Java 语言中,抽象类(abstract class) 和接口(interface) 是抽象思想的两种体现形式.初学者很容易把这两者搞混,所以Java面试中考抽象类和接口的区别的面试题也常有出现的. 本文将从下面几个方面深入探讨一下Java 抽象类和接口 一.抽象类语法及规范 二.接口的语法及规范 三.抽象类和接口的区别 ,将从语义细节及设计层面两方面来描述 本文由本人查阅资料并结合自己理解所作,如果有理解不到位的地方,欢迎各位斧正. 一.抽象类 抽象类使用 abstract class 来定

Java 抽象类和接口有什么差别

抽象类和接口有什么差别? 1. 抽象类在java语言中所表示的是一种继承关系,一个子类仅仅能继承一个父类.可是能够实现多个接口. 2. 在抽象类中能够拥有自己的成员变量和非抽象类方法,可是接口中仅仅能存在静态的不可变的(public static final)成员数据(只是一般都不在接口中定义成员数据).并且它的全部方法都是抽象的. 3.抽象类的子类能够部分实现父类中的抽象方法.可是它们本身也是抽象类; 而当类实现特殊接口时,它定义全部这样的接口的方法. 4.抽象类和接口所反映的设计理念是不同的

Java抽象类与接口的区别

很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题.本文我们将仔细讨论这些话题. 在讨论它们之间的不同点之前,我们先看看抽象类.接口各自的特性. 抽象类 抽象类是用来捕捉子类的通用特性的 .它不能被实例化,只能被用作子类的超类.抽象类是被用来创建继承层级里子类的模板.以JDK中的GenericServlet为例: public abstract class GenericServlet implements Servlet, ServletC

java 抽象类和接口

抽象类和接口,一直比较容易混淆,特性很类似,但是细节上又有不一样,总结如下. 首先,要了解什么是抽象方法. 抽象方法是只有方法声明没有方法体的方法用关节自abstract声明,例如 1 abstract returnType funName(Type t1,type2,t2...); 2 //例如 3 abstract int help(int k);; 包含了抽象方法的类,一定是抽象类.但是抽象类中可以没有抽象方法,也可以用自己的类变量(static修饰)和实例变量(非static 但是在类中

JAVA抽象类与接口的详细解读与示例

接口存在的原因: JAVA是单继承的,不支持多继承,但是有了接口,JAVA可以实现多个接口: 一个类要是实现某一个接口就必须实现接口内声明的所有方法(强迫执行,即便是空方法,也要实现): 接口特点: 1.接口内所有方法只有声明,没有方法体(隐式声明),例如:public abstract void func(); 2.接口内的所有变量都默认是public static final ,必须被显示初始化: 3.接口没有构造方法,不能被实例化: 4.实现接口的类要实现所有的抽象方法,否则该类就必须声明

java 抽象类、接口的使用

理解抽象类 abstract class和interface在Java语言中都是用来进行抽象类(本文 中的抽象类并非从abstract class翻译而来,它表示的是一个抽象体,而abstract class为Java语言中用于定义抽象类的一种方法, 请读者注意区分)定义的,那么什么是抽象类,使用抽象类能为我们带来什么好处呢? 在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样.并不是 所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这