接口和抽象类的区别?
区别一:
接口中全部都是抽象方法,在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.抽象类含有非抽象方法,而且子类继承该类时,
重写了该方法,那么该子类的对象调用该方法时,是子类中的方法;
如果子类没有重写该父类中的非抽象方法,那么子类对象调用的是父类中的方法