接口和抽象类你应该知道的基础
JAVA中的几句箴言:
抽象类和接口中都可以包含静态成员变量
抽象类中可以包含静态方法,接口内不能包含静态方法
abstract不能实例化,只能继承,可以有抽象成员
抽象类是对类抽象,而接口是对行为的抽象。
接口:本身没有任何实现,因为Java不涉及表象,而之描述public行为,所以Java接口比Java抽象类更为抽象化。Java的接口可以有public,静态的和final的属性。
抽象类:不想给出定义,百度给出的定义太高深。不适合我这种小白。
1、为什么接口内的成员只能是静态的?
由于接口不能实例化,非静态成员只能通过实例调用,所以必须定义为static的
2、为什么抽象类也不能被实例化,但抽象类里面可以定义非静态的:
由于子类与抽象类的关系中,子类继承抽象类,子类实例化,首先要执行父类的构造器,有构造器就有实例化。
3、为什么使用接口?
接口在实际开发过程中最大好处是,你可以按照设计,先把接口写好,然后分配大伙干活的时候,告诉a们去用写好的接口去实现他们的具体功能,而告诉b们,去写那些已经写好但是没有具体的代码的接口,这样可以提高工作效率。对了,另外接口解决了java不能多继承的问题。
4、为什么使用抽象类:
抽象类为子类提炼出公共的方法,并提供一个或几个抽象方法留给子类实现;抽象类的设计体现了模板模式的设计思想,即抽象类公共的普通方法依赖一个抽象方法,而抽象方法则推迟到子类中实现细节。