接口和抽象类的区别?

接口和抽象类的区别?

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

猜你喜欢

转载自blog.csdn.net/JetaimeHQ/article/details/83018971