抽象类和接口的区别

接口和抽象类的区别?

    区别一:

    接口中全部都是抽象方法,在jdk1.8中,接口可以定义默认方法和静态的实体方法

抽象类中可以有抽象方法,也可以有普通方法

区别二:

接口用关键字interface修饰

抽象类用关键字abstract修饰

区别三:

接口没有构造方法

抽象类有构造方法

区别四:

接口里面不能有构造代码块和静态代码块

抽象类中里面可以有构造代码块和静态代码块

区别五:

接口的实现类用关键字implement实现,且可以多实现

抽象类的子类用关键字extends继承,只能是单继承

区别六:

接口中成员变量的只能是public static final类型

抽象类中的成员变量可以是任意类型

区别七:

接口是对行为的抽象,即对整个类整体进行抽象

抽象类是对一种事物的抽象,即对类抽象

区别八:

如果一个类实现了该接口,则这个实现类和接口之间是有没有,具不具备的关系

如果一个类继承了抽象类,则这个类和抽象类之间是同一种类的关系

区别九:

抽象类作为很多子类的父类,他是一种模板设计模式

接口是一个行为规范,他是一种辐射式设计   

接口

概念:如果一个抽象类中所有的方法都是抽象方法,那么就称这个抽象类为接口

1.接口可以继承多个接口

2.一个类可以实现多个接口,实现的多个接口中不能出现"返回值不同,方法签名相同"的抽象方法

3.接口类的修饰符默认是public abstract

4.接口的属性默认是public static final修饰

5.接口的方法默认是public abstract修饰

6.接口不是类,不能创建对象,没有构造方法

7.接口里面可以定义内部类

8.接口里面不能有构造代码块和静态代码块


抽象类

概念:使用了关键词abstract声明的类叫作抽象类

1.抽象类即使不包含抽象方法也是抽象类

2.抽象类中可以包含抽象方法也可以不包含,也可以包含普通方法

3.抽象类不能被实例化,必须在子类中实例化

4.抽象类含有非抽象方法,而且子类继承该类时,

  重写了该方法,那么该子类的对象调用该方法时,是子类中的方法;

  如果子类没有重写该父类中的非抽象方法,那么子类对象调用的是父类中的方法

你可能感兴趣的:(抽象类和接口的区别)