抽象类和接口中有构造函数吗
昨天做个面试题,问我抽象类和接口中有构造函数,我还真没想过
------解决方案--------------------抽象类可以有构造方法
接口没有构造方法
------解决方案--------------------想了几个接口中不能定义构造器的理由:
1. 构造器用于初始化成员变量,接口没有成员变量
2. 类可以实现多个接口,若多个接口都有自己的构造器,则不好决定构造器链的调用次序
3. 构造器是属于类自己的,不能继承。因为是纯虚的,接口不需要构造器。
------解决方案--------------------抽象类一定有构造方法,你不写编译器帮你加。因为子类的构造方法肯定会super(),没有就出错了。
------解决方案--------------------抽象类可以有,有的话子类也必须有,接口没有。。其实LZ可以把胸器给面试的人看,神马问题都是浮云
------解决方案--------------------1.抽象类和接口中可以有方法,但是只有抽象类中有构造方法。
2.抽象类中可以有方法的实现,接口中不可以有方法的实现。
------解决方案--------------------抽象类和几口都有构造方法,但是只能通过子类来调用
------解决方案--------------------首先要弄清楚什么是抽象类,什么是接口?
根据《Java编程思想》这本书的定义:包含抽象方法的类叫做抽象类,也就是一个类只要有有声明但是没有方法体的方法那么这个类就是抽象类,
接口是一个极度抽象类,已经规定死了,它里面的方法都是抽象的方法。
现在已经弄清楚了抽象类和接口的定义,现在来谈一下构造方法:
构造方法有下面的两个作用:
1、创建对象
2、初始化
此刻,第一点你要弄明白的是构造方法也是一种方法,但是它是一种特殊的方法。
现在列出一点说明为什么接口中没有构造方法:
接口中要求所有的方法必须是抽象方法,而构造方法可以有方法体,构造方法可以置于接口中吗
(还有其他原因,欢迎在这里加)
现在来说说为什么抽象类中可以有抽象方法
首先,构造方法可以置于抽象类中,抽象类只要求至少有一个方法是抽象方法就行
其次,就是7楼说的了