java中接口与抽象类的区别

接口和抽象类的共同特征如下:

  接口和抽象类都不能被实例化,位于继承树的顶端,用于被其他类实现和继承。

  接口和抽象类都可以包含抽象的方法,实现接口的类或者继承抽象类的类都必须实现这些抽象的方法。

区别:二者的主要区别在于他们存在的目的不同,即设计的目的不同。

  接口作为系统与外界交互的窗口,接口体现的是一种规范。

  抽象类作为系统中多个子类的共同父类,抽象类体现的是一种模板式设计。

我们最关注的还是二者用法的区别:

(1)接口里只能包含抽象方法和默认方法,不能实现普通方法。抽象类完全可以包含普通方法。

  默认方法如下所示:

public interface A {
    default   void foo(){
       System.out.println("Calling A.foo()");
    }
}

public class Clazz implements A {
}
即使Clazz类并没有实现foo()方法。在接口A中提供了foo()方法的默认实现。
这就是默认方法。

(2)接口里不能定义静态方法;抽象类中可以。

(3)接口里只能定义静态变量,不能定义普通变量;抽象类即能定义静态变量又能定义普通变量。

(4)接口里不含构造器;抽象类中可以含有构造器。但不是用来创建对象的,而是让子类调用该构造器来完成抽象类的初始化的。

(5)接口里不能含有初始化块;但是抽象类中可以有初始化块。

(6)类是单继承,包括抽象类;但是接口的实现可以是多个,补充了java单继承的不足!

时间: 2024-10-03 01:21:19

java中接口与抽象类的区别的相关文章

Java中接口和抽象类的区别与联系

Java中接口和抽象类的区别与联系 1. 抽象类: (1).概念:抽象类是对一种事物的抽象,即对类抽..抽象类是对整个类整体进行抽象,包括属性.行为.Java抽象类和Java接口一样,都用来声明一个新的类型.并且作为一个类型的等级结构的起点. (2).格式: public abstract class abstractDemo{ /**属性*/ private String name; /**方法*/ public abstract void fun(); } (3).说明: A:抽象类中不一定

Java中接口和抽象类的区别?

抽象类 抽象类必须用 abstract 修饰,子类必须实现抽象类中的抽象方法,如果有未实现的,那么子类也必须用 abstract 修饰.抽象类默认的权限修饰符为 public,可以定义为 public 或 procted,如果定义为 private,那么子类则无法继承.抽象类不能创建对象 抽象类和普通类的区别 抽象类必须用public.procted 修饰(如果为private修饰,那么子类则无法继承,也就无法实现其抽象方法).默认缺省为 public 抽象类无法创建对象 如果一个子类继承抽象类

java中接口和抽象类的区别

抽象类: 1.用abstract表示 2.里面有一个或多个抽象方法,在方法前加abstract,抽象类中也可以没有抽象方法 3.抽象类用extends继承,并且必须重写抽象方法 接口 1.用implement表示 2.接口是极度抽象的类,所有方法都是抽象的,都需要进行重写 接口的作用:解决java中的单继承问题,一个类可以实现多个接口,但只能有一个父类 共同点:都不能被实例化

Java中接口和抽象类的比较

Java中接口和抽象类的比较-2013年5月写的读书笔记摘要 1. 概述 接口(Interface)和抽象类(abstract class)是 Java 语言中支持抽象类的两种机制,是Java程序设计使用多态性的基础[[1]].(在面向对象语言中,接口的多种不同的实现方式即为多态.多态性是允许你将父对象设置成为和一个或更多的他的子对象的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自"Delphi4编程技术内幕").简单的说,就是一句话:允许将子类类型的

Java中接口和抽象类的比較

Java中接口和抽象类的比較-2013年5月写的读书笔记摘要 1. 概述 接口(Interface)和抽象类(abstract class)是 Java 语言中支持抽象类的两种机制,是Java程序设计使用多态性的基础[[1]]. (在面向对象语言中,接口的多种不同的实现方式即为多态. 多态性是同意你将父对象设置成为和一个或很多其它的他的子对象的技术.赋值之后.父对象就能够依据当前赋值给它的子对象的特性以不同的方式运作(摘自"Delphi4编程技术内幕"). 简单的说.就是一句话:同意将

JAVA中接口与抽象类

抽象类总结 抽象类的概念:是使用关键字abstract修饰的类就是抽象类: 抽象类的产生:当多个不能相互继承的类具有相同的功能时,就需要将共同的信息向上抽取,放到公共的父类中:如果公共的父类只能描述所有子类都具有的功能,但描述不清功能的具体实现,就需要将该函数定义为抽象的,使用关键字abstract修饰:如果一个类中出现了抽象的函数,说明这个类也是不具体的,应该定义为抽象类,使用abstract修饰: 抽象类的特点: 抽象类不能实例化: 抽象类中的抽象函数必须由子类去实现,否则子类也是抽象类:

C#中接口和抽象类的区别

什么是接口? 用来定义一种程序的协定.实现接口的类或者结构要与接口的定义严格一致.有了这个协定,就可以抛开编程语言的限制(理论上).C#接口可以从多个基接口继承,而类或结构可以实现多个接口.C#接口可以包含方法.属性.事件和索引器.接口本身不提供它所定义的成员的实现.接口只指定实现该接口的类或接口必须提供的成员. 如何使用接口? 例如: <span style="font-family:KaiTi_GB2312;">using System; using System.Co

C#中接口与抽象类的区别

接口与抽象类是面试中经常会考到的点,容易混淆.首先了解下两者的概念: 一.抽象类:      抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们.另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们. 二.接口: 接口是引用类型的,类似于类,和抽象类的相似之处有三点: 1.不能实例化: 2.包含未实现的方法声明: 3

java中接口和抽象类有什么区别,举例!

接口和抽象类有什么区别?(视频下载) (全部书籍)答:马克-to-win:抽象类里可以有实现的方法,接口里不能有,所以相对来讲各方面实现都简单(尤其动态方法调度).另外:类可以实现多个接口.反过来说,也正是抽象类一个致命伤:类只能继承一个超类(抽象类或其他类)..................详情请进:http://www.mark-to-win.com/index.html?content=JavaBeginner/javaUrl.html&chapter=JavaBeginner/Java