java抽象类和接口



1.抽象类 

  抽象类在概念上描述的是抽象世界,抽象类刻画了公有行为的特征,并且通过继承机制传送给它的派生类。抽象类使用关键字abstract 修饰,语法如下:

abstract class 类名{
	类体;
}

  抽象方法是指在抽象类中某些成员方法没有具体的实现,只有方法声明。抽象方法使用关键字abstract 修饰,格式如下:

    public abstract 返回类型 方法名([参数列表]);

  抽象类和抽象方法的具体规则如下:

    1.用abstract 关键字修饰一个类时,该类叫做抽象类,用abstract类修饰一个方法时,该方法叫做抽象方法。

    2.含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。

    3.抽象方法只需声明,不需实现。

    4.在抽象类中可以有数据成员,可以有零个或多个抽象方法,也可以由非抽象方法。

    5.抽象类不能被实例化。

    6.static、private、final 方法不能是抽象的。

    7.final 类型的类不能包含抽象方法。

    8.抽象类的子类必须实现父类中所有的抽象方法,否则,该类必须定义为抽象类。



2.接口

  2.1接口的定义

  接口是特殊的抽象类。接口的出现弥补了java只支持单继承的不足,它可以用来完成多继承的一些功能。在java中,使用关键字interface 来定义接口,借口的定义和类的定义很相似,分为接口的声明和接口体。但在接口中,所有的方法都是抽象的,所有的变量都是static常量,语法如下:

[修饰符] interface 接口名 [extends 父接口列表]{
	静态常量;
	方法声明;
}

  注:

    1.接口的修饰符只有public 和默认修饰符两种。

    2.接口名:是所创建的该接口的名字,一般用能反映该接口实际意义的英文名词表示。

    3.接口中的数据成员默认是 public static final 修饰的,即接口中的数据成员是全局静态常量,必须在定义时赋予常量初始值。

    4.在接口中所有的方法都是 public abstract 的。

    5.接口只能继承接口,不能继承类,但通过接口可以实现多重继承。

    6.接口没有构造方法,他们不能直接被实例化,但允许有接口类型的变量。

  2.2接口的实现

  在java中,使用implements关键字来实现接口,语法如下:

public class 类名 [extends 父类] implements 接口列表{
	类体;
}

  



3.抽象类和借口的异同

  相同点:1.都不能被实例化

      2.都可以应用于多态

  不同点:1.反映的设计理念不同

      2.接口支持多继承;抽象类不能实现多继承。

      3.接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。

      4.接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。

      5.接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。

      6.接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。

      7.接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。



java抽象类和接口

时间: 2024-12-11 00:44:04

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

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抽象类与接口的区别

很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题.本文我们将仔细讨论这些话题. 在讨论它们之间的不同点之前,我们先看看抽象类.接口各自的特性. 抽象类 抽象类是用来捕捉子类的通用特性的 .它不能被实例化,只能被用作子类的超类.抽象类是被用来创建继承层级里子类的模板.以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语言中用于定义抽象类的一种方法, 请读者注意区分)定义的,那么什么是抽象类,使用抽象类能为我们带来什么好处呢? 在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样.并不是 所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这

java抽象类和接口详解

接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 一.抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的.如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类.比如new Animal

java抽象类与接口的比较

l  语法: 抽象类: 1.如果一个类中有个方法时被声明为抽象方法,那么本类需要用abstract关键字声明: 2.抽象类的成员属性跟普通类没什么区别: 3.抽象类不能被直接实例化: 4.抽象类中的抽象方法可以用public product修饰  不能用static final private修饰: 5.还是跟普通类一样只支持单继承 接口: 1.接口中的方法全部为  抽象方法  都是被public abstract修饰的 2.接口中的变量全部为public static final修饰的常量 3