普通类、抽象类和接口区别:

1.普通类可以实例化,接口都不能被实例化(它没有构造方法),抽象类如果要实例化,抽象类必须指向实现所有抽象方法的子类对象(抽象类可以直接实例化,直接重写自己的抽象方法),接口必须指向实现所有所有接口方法的类对象。

2.抽象类要被子类继承,接口要被子类实现。

3.接口只能做方法的声明,抽象类可以做方法的声明,也可以做方法的实现。

4.接口里定义的变量只能是公共的静态常量,抽象类中定义的变量是普通变量。

5.抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类的抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如果不能全部实现接口方法,那么该类只能是抽象类。

6.抽象方法只能声明,不能实现。接口是设计的结果,抽象类是重构的结果。

7.抽象类里可以没有抽象方法。

8.如果一个类里有抽象方法,那么该类只能是抽象类。

9.抽象方法要被实现,所以不能是静态的,也不能是私有的。

10.接口可以继承接口,并可多继承接口,但类只能单继承。(重要啊)

11.接口中的常量:有固定的修饰符-public static final(不能用private和protected修饰/本质上都是static的而且是final类型的,不管加不加static修饰)。

12.接口中的抽象方法:有固定的修饰符-public abstract 。

13、接口细节:

若接口中方法或变量没有写public,static,final / public,abstract ,会自动补齐 。

接口中的成员都是共有的。

接口与接口之间是继承关系,而且可以多继承。

接口不能被实例化

一个类可以实现多个接口

在java开发中,我们经常把常用的变量,定义在接口中,作为全局变量使用,访问形式:接口名.变量名。

一个接口不能继承其它的类,但是可以继承别的接口

一个重要的原则:当一个类实现了一个接口,要求该类把这个接口的所有方法全部实现

注意:

①抽象类和接口都是用来抽象具体的对象的,但是接口的抽象级别更高。

②抽象类可以有具体的方法和属性,接口只能有抽象方法和静态常量。

③抽象类主要用来抽象级别,接口主要用来抽象功能。

④抽象类中,且不包含任何的实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的。

⑤接口方法,访问权限必须是公共的 public。

⑥接口内只能有公共方法,不能存在成员变量。

⑦接口内只能包含未被实现的方法,也叫抽象方法,但是不能用 abstract 关键字。

⑧抽象类的访问速度比接口要快,接口是稍微有点慢,因为它需要时间去寻找在类中实现的方法。

⑨抽象类,除了不能被实例化外,与普通 java 类没有任何区别。

⑩抽象类可以有 main 方法,接口没有 main 方法。

?抽象类可以用构造器,接口没有。

?抽象方法可以有 public、protected 和 default 这些修饰符,接口只能使用默认 public。

?抽象类,添加新方法可以提供默认的实现,不需要改变原有代码。接口添加新方法,子类必须实现。

?抽象类的子类用 extends 关键字继承,接口用 implements 来实现。

二、什么时候用抽象类和接口

1.若果你拥有一些方法并且想让他们中的一些有默认实现,那就用抽象类。

2.如果你想实现多重继承,那么必须使用接口。由于 java 不支持多继承,子类不能继承多个父类,但是可以实现多个接口,因此你可以使用接口来实现它。

3.如果基本基本功能在不断变化,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么所有实现类都需要改变。

作者:因为我的心
链接:https://www.jianshu.com/p/846ac4d7539e
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

原文地址:https://www.cnblogs.com/leeego-123/p/11378108.html

时间: 2024-08-30 04:57:35

普通类、抽象类和接口区别:的相关文章

抽象类,接口区别

抽象类:                                                                                                  接口: 定义:包含一个抽象方法的类                                                                               抽象方法和全局常量 组成:构造方法,抽象方法,普通方法,常量,变量                   

抽象类和接口区别

简述抽象类和接口区别 ①    Abstract修饰符:抽象类不能省略:接口省略 ②    子类和实现类:抽象类的子类继承抽象类,单继承:接口的实现类实现接口,多实现: ③    继承:抽象类单继承:接口多继承 ④    变量和方法:除抽象方法外,有成员变量和普通方法:接口只有抽象方法和静态常量 ⑤    复用:抽象类实现代码的复用:接口不能实现代码的复用 原文地址:https://www.cnblogs.com/qq1335210739/p/10210761.html

java抽象类和接口区别

深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然.今天我们就一起来学习一下Java中的接口和抽象类.下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.抽象方法的声明格式为:

抽象类与接口区别

接口:存在的意义在于解耦,增强代码的可拓展性,可维护性. 抽象类:常用于充当公共角色,用于被其子类继承,子类继承其实现的方法,去重写其抽象的方法.继承更倾向于对类的完善. 举个栗子: 接口:小明是i西科的码手,某日李师兄分配了任务,要求他写一个类,用于封装教务处爬虫代码,代码会被引用于tsm类(第三方授权平台管理类)中,于是小明就开始写,写了很多代码,但是代码混乱,如果再想加入新的东西,简直太难了.第二天师兄来了实验室,告诉小明把实验课爬虫也加进这个类中.这可苦坏了小明,因为在tsm类中,直接引

返璞归真之 抽象类和接口区别

抽象类: 1.抽象类必须声明标识关键字(abstract) 2.抽象类中的抽象属性和方法也得声明关键字 3.抽象类中可以有非抽象属性和方法,但子类无法重写:抽象方法没有方法体 4.抽象类中的属性和方法不可以用private修饰符:当然非抽象除外 5.子类继承抽象类后,抽象类中的方法必须实现,并且只可以继承一个抽象类,同时还可以继承接口,不可以继承类 6.子类中的自己写的方法,不可和父类(抽象类)中的方法名称相同 7.抽象类可以有构造函数 使用抽象类的好处有: 1.代码重用.继承类都能用抽象类定义

Java抽象类与接口区别

这篇文章讲的很好: http://www.importnew.com/12399.html

java中抽象类和接口的用法和区别

一.抽象类 1.抽象类 包含一个抽象方法的类就是抽象类 2.抽象方法 声明而未被实现的方法,抽象方法必须使用abstract关键词字声明 public abstract class People { //关键词abstract,声明该类为抽象类 public int age; public void Num() { } public abstract Name(); //声明该方法为抽象方法 } 3.抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法 4.抽象类不能被直接实例

PHP类继承、接口继承关系概述

PHP类继承: PHP类不支持多继承,也就是子类只能继承一个父类,但是支持多层次继承,比如: 1 class frist{ 2 public function __construct(){ 3 echo "我是第一个类.","<br>"; 4 } 5 public function printer(){ 6 echo "frist","<br>"; 7 } 8 } 9 class seconds ext

PHP的抽象类、接口类的区别和选择【转载】

本文转自:http://blog.csdn.net/fanteathy/article/details/7309966 区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过关键字extends继承. 2.接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量.抽象类中可以声明各种类型成员变量,实现数据的封装.(另Java接口中的成员变量都要声明为public static final类型) <?php abstract c