接口】【Java基础】java接口和抽象类的异同_第2页回答

2021-01-22 16:48发布

15条回答
buzuofa100
2楼 · 2021-01-25 10:44

java抽象类定义


  在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。


  抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。


  由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。


  父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。


  在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。


ban_gank
3楼 · 2021-01-25 13:33

Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以(就是interface中只能定义方法,而不能有方法的实现,而在abstract class中则可以既有方法的具体实现,又有没有具体实现的抽象方法),这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个 新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点

小小李兆佳
4楼 · 2021-01-25 17:35

抽象类目的是用来继承的,在定义上,可以没有抽象方法,只是用abstract修饰是没有语法错误的,但是没有哦实际意义。抽象类中的抽象方法是让子类继承抽象类,来实现抽象类中的抽象方法,根据子类的需求分别来实现不同的功能。

梵梵
5楼 · 2021-01-28 10:07

1. 抽象类:

 

  (1).概念:抽象类是对一种事物的抽象,即对类抽。.抽象类是对整个类整体进行抽象,包括属性、行为。Java抽象类和Java接口一样,都用来声明一个新的类型。并且作为一个类型的等级结构的起点。

 

  (2).格式:

 

  代码如下:

 

  public abstract class abstractDemo{

 

  /**属性*/

 

  private String name;

 

  /**方法*/

 

  public abstract void fun();

 

  }

 

  (3).说明:

 

  A:抽象类中不一定有抽象方法,但是有抽象方法的类一定要定义为抽象类。

 

  B:在Java语言中,类有两种,一种是具体类,另一种是抽象类。

 

  具体类可以实例化,抽象类不可以实例化。

 

  C:对于抽象类,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,子类可以不进行变更;

 

  D:抽象方法只有声明,没有具体的实现。抽象类是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,就等于白白的创建了这个类。

 

  E:对于一个父类,如果它的一个方法在父类中实现没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为abstract方法,此时这个类也就成为了abstract抽象类。

 

  2. 接口:

 

  (1).概念:接口是对行为的抽象。接口是对类局部(行为)进行抽象。

 

  (2).格式:

 

  代码如下:

 

  public interface test {

 

  /** 抽象方法 */

 

  public abstract void fun();

 

  }

 

  (3).说明:

 

  接口中可以含有变量和方法,但是,接口中的变量会被隐式地指定为public static final。而方法会被隐式地指定为public  abstract方法且只能是public abstract方法。

 

  3. 接口和抽象类的区别与联系:

 

  (1).抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。

 

  (2).抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。

 

  (3). 继承是一个 “是不是”的关系,而 接口 实现则是  “有没有”的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系。

 

  (4).接口只给出方法的声明,不给出方法的实现。抽象类中可以有抽象方法的一般方法。如果是抽象方法的话,只有方法的声明。如果是一般方法的话,既有方法的声明,也有方法的实现。

 

  4. 使用接口的原因:

 

  (1).没有接口,可插入性就没有保证。因为Java是单继承的。

 

  (2).在一个类等级结构中的任何一个类都可以实现一个接口,如果这个类实现了这个接口那么将会影响到此类的所有子类,但是不会影响到此类的所有父类。

 

  (3).一个类最多有一个父类,但是可以同时实现几个接口。


天天天天
6楼 · 2021-01-28 10:36

1、抽象类中是否有构造函数?


    有,用于给子类对象进行初始化。


  2、抽象类中是否可以定义非抽象方法?


  可以。其实,抽象类和一般类没有太大的区别,都是在描述事物,只不过抽象类在描述事物时,有些功能不具体。所以抽象类和一般类在定义上,都是需要定义属性和行为的。只不过,比一般类多了一个抽象函数。而且比一般类少了一个创


清屿
7楼 · 2021-01-28 17:26

抽象类是一种对事物的抽象,而接口是一种对行为的抽象; 抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。 抽象类是一种模板式设计,而接口是一种行为规范,是一种辐射式设计。

帅帅马
8楼 · 2021-01-29 14:20

1、从声明上:

i. 抽象类是一个类,使用class声明;还需要使用关键字abstract修饰;

ii. 接口不是一个类,使用interface声明;

2、从能够书写的成员上看:

i. 抽象类是一个类,可以书写类中可以书写的成员,和抽象函数;

ii. 接口只能书写成员变量和抽象函数,而且修饰符是固定的;

3、从有无构造函数上看:

i. 抽象类必须有构造函数;

ii. 接口没有构造函数

4、从作用上看:

i. 抽象类是父类,用来描述所有子类的共性信息的,只是描述的有些功能是不具体的;

ii. 接口是用来描述不属于继承体系的扩展功能的;还可以定义规则;

5、继承关系上:

i. 抽象类和类之间是继承关系,只支持但继承和多重继承;

ii. 接口和类之间是实现关系,一个实现类可以实现多个接口;

接口和接口之间是继承关系,可以多继承和多重继承;


相关问题推荐

  • 回答 4

    对于接口测试,首先测试人员要懂代码,你只需要知道接口的作用是什么就可以了,其次,自己去读开发的代码。然后,根据该接口功能及代码写测试用例:根据该接口参数,构造不同的用例,测试接口在参数合法及非法情况下能否达到预期效果,根据该接口中的逻辑,测...

  • 回答 5

    Http接口是互联网各系统之间对接的重要方式之一,使用http接口,开发和调用都很方便,也是被大量采用的方式,它可以让不同系统之间实现数据的交换和共享,但由于http接口开放在互联网上,那么我们就需要有一定的安全措施来保证不能是随随便便就可以调用;目前...

  • 回答 15

    java里最常用的是关键字,这些关键字可以说是程序中的关键,我都帮你整理出来哈关键字含义abstract表明类或者成员方法具有抽象属性assert断言,用来进行程序调试boolean基本数据类型之一,声明布尔类型的关键字break提前跳出一个块byte基本数据类型之一,字节...

  • 回答 14

    1、利于代码的规范这样做的目的一方面是为了给开发人员一个清晰的指示,告诉他们哪些业务需要实现;同时也能防止由于开发人员随意命名而导致的命名不清晰和代码混乱,影响开发效率。2、有利于对代码进行维护可以一开始定义一个接口,把功能菜单放在接口里,然...

  • 回答 6
    已采纳

    1、接口类似于类,但接口的成员都没有执行方式,它只是方法、属性、事件和索引的组合而已,并且也只能包含这四种成员;类除了这四种成员之外还可以有别的成员(如字段)。2、不能实例化一个接口,接口只包括成员的签名;而类可以实例化(abstract类除外)。3、接...

  • 回答 7

    第一步我们首先需要知道java中的接口指的是抽象方法的集合,一个抽象类型,一般以interface来声明,需要注意的是接口不是类第二步我们可以看一下接口声明的格式,接口中的抽象方法都是隐式的,所以声明不需要abstract关键字,接口中的变量只能是 public stati...

  • 回答 9

    1、定义接口的重要性:在Java编程,abstract class 和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在,才使得Java成为面向对象的编程语言。2、定义接口有利于代码的规范:对于一个大型项目而言,架构师往往会对一些主要的接口来进行定义,...

  • 回答 9

    1.java.lang.StringString类无可争议的获得冠军,应该没有人会否认这一点,这是一个最终类,用于创建/操作不可变的字符串文字。2.java.lang.SystemSystem类的使用取决于你工作的项目类型,你可能没有在项目中使用过它,但它仍然是受欢迎的Java类之一,这是一...

  • 回答 1

    需要启动网络服务

  • 回答 15
    已采纳

    这个其实和接口测试的场景密不可分的,比如说:外部接口测试:    必须先接口测试通过了,才能执行功能测试子系统或者各个模块之间的联调测试:    必须各子系统后台代码完成,并提供接口才可以完成测试,一般来说都要求各子系统功能测试通过后再进行...

  • 回答 2

    接口调用一般分为前端调用和后端调用。百度API有很多官方文档和接口说明,在调用时传入相对应的数据。如果在后端python代码中调用可以借助:requests模块实现。requests模块主要用于模拟浏览器进行访问。也可以用于请求某些接口获取数据。...

没有解决我的问题,去提问