精华内容
下载资源
问答
  • Java接口和抽象类区别
    千次阅读
    2020-12-06 15:13:33

    接口

    接口是对行为的抽象,是一种行为的规范;
    接口中可以有变量和方法,但是变量会被隐式的指定为public static final变量,而方法会被指定为public abstract【所有方法在接口中不能有实现,也说明接口中都是抽象方法】,(Java 8 开始接⼝⽅法可以有默认实现);
    一个类可以实现多个接口。

    抽象类

    抽象类是对类的抽象,是一种模板设计;
    如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰;
    一个类只能继承一个抽象类。

    总结

    1.成员变量:接口中的成员变量只能是public static final,抽象类可以是各种类型;
    2.方法:接口中的方法只能是public abstract(抽象方法),抽象类可以实现方法,且方法修饰符可以是各种类型(private除外,因为抽象方法就是为了被重写);
    3.继承与实现:一个类只能继承一个抽象类,而一个类却可以实现多个接口;
    4.设计层面:接口是对行为的抽象,对于某些类的行为特征,可以使用接口设计;而抽象类是对类的抽象,是一种模板设计,对于一些同类特征可以设计为一个模板抽象类,供子类继承。
    比如:支付系统中的签约和扣款功能,我们可以一并设计为一个抽象类。此时有需求新增一个查询账单功能,加入抽象类的话,所有的子类都会有,但是有些客户并不需要查询账单功能,所以查询账单功能可以设计为一个接口。这样子类继承抽象类就有了一个公用的签约和扣款方法,如果需要实现查询账单功能,则实现接口即可。

    更多相关内容
  • Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。我们一起来学习一下Java中的接口和抽象...
  • 抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是...在Java抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口接口接口(英文:
  • java接口和抽象类区别和作用 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过(implements)接口的方式,从而来实现接口的抽象方法。接口并...

    java接口和抽象类的区别和作用

    接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过(implements)接口的方式,从而来实现接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。接口无法被实例化(因为它不是类 有未实现的方法跟虚拟机的机制有关),但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

    JAVA中接口存在的意义:

        1、重要性:在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。

     2、简单、规范性:如果一个项目比较庞大,那么就需要一个能理清所有业务的架构师来定义一些主要的接口,这些接口不仅告诉开发人员你需要实现那些业务,而且也将命名规范限制住了(防止一些开发人员随便命名导致别的程序员无法看明白)。

     3、维护、拓展性:比如你要做一个画板程序,其中里面有一个面板类,主要负责绘画功能,然后你就这样定义了这个类。

             可是在不久将来,你突然发现这个类满足不了你了,然后你又要重新设计这个类,更糟糕是你可能要放弃这个类,那么其他地方可能有引用他,这样修改起来很麻烦。

             如果你一开始定义一个接口,把绘制功能放在接口里,然后定义类时实现这个接口,然后你只要用这个接口去引用实现它的类就行了,以后要换的话只不过是引用另一个类而已,这样就达到维护、拓展的方便性。

     4、安全、严密性:接口是实现软件松耦合的重要手段,它描叙了系统对外的所有服务,而不涉及任何具体的实现细节。这样就比较安全、严密一些(一般软件服务商考虑的比较多)。

    接口的特点:

    1:接口的命名规则与类型不同。如果修饰符是public。则该接口在整个项目中可见 ,如果省略修饰符 则该接口只能在该包可见

    2:接口中可以定义常量,不能定义变量,接口中的属性都会自动用public static final修饰,即接口中的属性都是全局静态常量,接口中的常量必须在定义时指定初始值

    3:接口中所有的方法抽象方法。接口中的方法都会自动用public abstract修饰。即接口中只有全局抽象方法,

    4:和抽象类一样,接口不能被实例化,接口中不能有狗构造方法

    5:接口之间可以通过extends 实现继承关系,一个接口可以继承多个接口。但接口不能继承类

    6:接口的实现类必须实现接口的全部方法,否则必须定义为抽象类

    7:一个类只能有一个直接父类,但可以通过implements实现多个接口,当雷在继承父类的同时有实现了多个接口时,extends关键字必须位于implements关键字之前

    :JDK 1.8 以后,接口里可以有静态方法和方法体了。

    接口与类的区别:

    • 接口不能用于实例化对象。
    • 接口没有构造方法。
    • 接口中所有的方法必须是抽象方法。
    • 接口不能包含成员变量,除了 static 和 final 变量。
    • 接口不是被类继承了,而是要被类实现。接口也不能继承类 接口间可以多继承多实现,类是先继承父类后再实现接口
    • 接口支持多继承。

    抽象类:

    抽象类就是不能使用new方法进行实例化的类(不能被实例化,可以有多个抽象方法),即没有具体实例对象的类,抽象类有点类似于“模板”的作用,目的是根据其格式来创建和修改新的类,对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象,当一个类被声明为抽象类时,要在这个类前面加上修饰符abstract,在抽象类中的成员方法可以包括一般方法和抽象方法

    java抽象类的作用

    1.通过继承它实现多态,后期绑定,可以为将来要实现的东西做好接口,实现重用性。
    2.接口就是更纯粹的抽象类

    java中抽象类的特点:

    1. 如果一个类中有抽象方法,那么这个类一定是抽象类

     2. 抽象类中不一定有抽象方法

     3. 抽象类中可以存在抽象方法

     4. 抽象类中可以存在构造方法

     5. 抽象类中可以存在普通属性、方法、静态属性和静态方法

     6. 抽象类中的抽象方法需要有子类实现,如果子类不实现,则子类也需要定义为抽象的

    7,抽象方法和抽象类都必须被abstract关键字修饰。

    8,抽象类不可以用new创建对象。因为调用抽象方法没意义

    9:抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法

    接口和抽象类的区别之处:

    1. 接口中所有的方法隐含都是抽象的,而抽象类则可以同时包含抽象和非抽象的方法(除了静态方法和静态方法体)

    2. 类可以实现很多个接口,但是只能继承一个抽象类

    3. 类可以不实现抽象类和接口声明的所有方法,在这种情况下,类也必须得声明成是抽象的

    4. 抽象类可以在不提供接口方法实现的情况下实现接口

    5. java接口中声明的变量默认都是final的,抽象类可以包含非final变量

    6. java接口中的成员函数默认都是public的,抽象类中的成员函数可以是private,protected或者是public的

    7. 接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是如果它包含main方法的话是可以被调用的

    8:抽象类中可以有普通方法,接口中不能。

    9:抽象类可以有构造,接口不能

    10:抽象类中可以有普通字段,而接口中不行

    11:抽象类不能实现多继承,接口可以

    12:符合isa关系的选用抽象类,符合hasa关系的选用接口比抽象类抽象程度更高

     

    展开全文
  • Java接口和抽象类的定义语法分别为interface与abstract关键字。 抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为抽象方法,抽象方法只有方法的声明,没有方法体。抽象类的...

    Java基础之接口与抽象类的区别

    1、基本语法区别
    Java中接口和抽象类的定义语法分别为interface与abstract关键字。

    抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为抽象方法,抽象方法只有方法的声明,没有方法体。抽象类的特点:

    a、抽象类不能被实例化只能被继承;

    b、包含抽象方法的一定是抽象类,但是抽象类不一定含有抽象方法;

    c、抽象类中的抽象方法的修饰符只能为public或者protected,默认为public;

    d、一个子类继承一个抽象类,则子类必须实现父类抽象方法,否则子类也必须定义为抽象类;

    e、抽象类可以包含属性、方法、构造方法,但是构造方法不能用于实例化,主要用途是被子类调用。

    接口:Java中接口使用interface关键字修饰,特点为:

    a、接口可以包含变量、方法;变量被隐士指定为public static final,方法被隐士指定为public abstract(JDK1.8之前);

    b、接口支持多继承,即一个接口可以extends多个接口,间接的解决了Java中类的单继承问题;

    c、一个类可以实现多个接口;

    d、JDK1.8中对接口增加了新的特性:(1)、默认方法(default method):JDK 1.8允许给接口添加非抽象的方法实现,但必须使用default关键字修饰;定义了default的方法可以不被实现子类所实现,但只能被实现子类的对象调用;如果子类实现了多个接口,并且这些接口包含一样的默认方法,则子类必须重写默认方法;(2)、静态方法(static method):JDK 1.8中允许使用static关键字修饰一个方法,并提供实现,称为接口静态方法。接口静态方法只能通过接口调用(接口名.静态方法名)。

    如下例子所示:

    public interface Person{
    
      public static final int a=10;
      //JDK1.8
        default void sayHello(){
            System.out.println("Hello World");
        }
        public void say();
    }
    
    public abstract class Person{
      public abstract void say();
      public void eat(){};
    }
    

    如上述代码所示:

    接口只能是功能的定义,而抽象类既可以为功能的定义也可以为功能的实现。

    2、面试题:接口与抽象类的区别
    相同点

    (1)都不能被实例化 (2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。

    不同点

    (1)接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。

    (2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。

    (3)接口强调特定功能的实现,而抽象类强调所属关系。

    (4)接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。

    展开全文
  • 主要介绍了Java接口和抽象类区别,对于Java的初学者来说是需要准确掌握的概念!
  • 主要介绍了Java接口和抽象类原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制。接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现。接口(英文:Interface),在JAVA编程语言中...

    接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制。

    接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现。

    接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

    接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

    除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

    接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

    抽象类是可以有私有方法或私有变量的,通过把类或者类中的方法声明为abstract来表示一个类是抽象类,被声明为抽象的方法不能包含方法体。子类实现方法必须含有相同的或者更低的访问级别(public->protected->private)。抽象类的子类为父类中所有抽象方法的具体实现,否则也是抽象类。

    接口可以被看作是抽象类的变体,接口中所有的方法都是抽象的,可以通过接口来间接的实现多重继承。接口中的成员变量都是static final类型,由于抽象类可以包含部分方法的实现,所以,在一些场合下抽象类比接口更有优势。

    相同点:

    (1)都不能被实例化

    (2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。

    不同点:

    (1)接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。

    (2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。

    (3)接口强调特定功能的实现,而抽象类强调所属关系。

    (4)接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。

    (5)接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色,不适用于日后重新对立面的代码修改。功能需要累积时用抽象类,不需要累积时用接口。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • 下面小编就为大家带来一篇Java基础篇_有关接口和抽象类的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了java接口和抽象类区别与对比的相关资料,这里详细说明他们之家的区别,需要的朋友可以参考下
  • Java语言中,abstract classinterface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract classinterface之间在对于抽象类定义的支持方面具有很大的相似性,...
  • JAVA 接口和抽象类区别

    千次阅读 2019-06-04 10:59:15
    抽象类总结 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类抽象类中的...
  • 主要介绍了Java接口和抽象类用法,结合实例形式总结分析了Java接口抽象类的具体定义、使用技巧与相关注意事项,需要的朋友可以参考下
  •  在Java中用abstract修饰的类是抽象类,用abstract修饰的类的方法是抽象方法,抽象类和抽象方法用法总结如下。  1.abstract可以修饰class表示抽象类,可以修饰方法表示抽象方法,但是不能修饰成员变量,也是没有...
  • 主要介绍了Java接口和抽象类区别与相同之处,本文讲解了抽象类的概念、接口的概念、接口和抽象类区别与联系等内容,需要的朋友可以参考下
  • Java 接口和抽象类区别

    万次阅读 多人点赞 2011-11-01 08:56:18
    一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法一些具体...
  • 在重温java基础的是时候,今天复习学习了接口抽象类区别,稍微整理了一下。问题描述:在java语言中,接口和抽象类都不能被实例化,都位于继承树的顶端,用于被其他类实现继承。接口和抽象类都可以包含抽象方法...
  • java接口和抽象类区别

    万次阅读 多人点赞 2018-09-21 23:18:35
    接口和抽象类区别? 接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制。 接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现。 抽象类是可以有...
  • Java抽象类接口实验报告
  • 抽象类特征 1.由abstract修饰的类叫做抽象类,也可以修饰抽象方法 2.abstract修饰的抽象方法可以不在抽象类当中实现,但一定要在子类当中重写,并实现 3.只有抽象类当中才能有抽象方法,普通类当中不能有抽象方法...
  • 主要介绍了Java接口和抽象类,实例分析了java接口抽象类的概念与相关使用技巧,需要的朋友可以参考下
  • Java 接口接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface...除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。接口无法被实例化,但是可以被实现。一个...
  • Java中的抽象类和接口

    千次阅读 多人点赞 2022-04-08 15:17:42
    各位铁汁们大家好呀!今天让我们继续学习java,看看java中的抽象类和接口到底是什么? 里面也会讲到多态呀,一起来看看吧
  • 主要介绍了Java接口和抽象类深入理解的相关资料,希望通过本文大家能够理解应用接口抽象类的使用方法,需要的朋友可以参考下
  • Java中接口和抽象类的异同“抽象方法”属于一种不完整的方法,只含有一个声明,没有方法主体。本文是百分网小编搜索整理的关于Java中接口和抽象类的异同,供参考...Java抽象类和Java接口一样,都用来声明一个新的类...
  • 主要给大家介绍了关于java抽象类、抽象方法、接口与实现接口的相关资料,文中通过示例代码将四者介绍的非常详细,并且简单介绍了抽象类和接口区别,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
  • 一、java中的接口本质上是加约束的抽象类 //抽象类 public abstract class AExample {  public abstract int add(int x,int y);  public abstract int sub(int x,int y); } //接口 public interface ...
  • 二、接口和抽象类区别接口里只能包含抽象方法,静态方法默认方法,不能为方法提供实现,也就是方法不能书写方法体,而抽象类中的普通方法可以为方法提供实现 ② 抽象类中的成员变量可以是各种类型的,而接口...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 577,964
精华内容 231,185
关键字:

java接口和抽象类的区别

java 订阅