关于JAVA构造器的使用问题?
问题描述
class SuperClass { private int n; SuperClass(){ System.out.println('SuperClass()'); } SuperClass(int n) { System.out.println('SuperClass(int n)'); this.n = n; }}class SubClass extends SuperClass{ private int n; SubClass(){ super(300); System.out.println('SubClass'); } public SubClass(int n){ System.out.println('SubClass(int n):'+n); this.n = n; }}public class TestSuperSub{ public static void main (String args[]){ SubClass sc = new SubClass(); SubClass sc2 = new SubClass(200); }}
请问为什么说:1.子类不能继承父类的构造器(构造方法或者构造函数),但是父类的构造器带有参数的,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的参数列表。该案例中,(1)子类SubClass已经继承了父类SuperClass,里面的构造器不是已经发生继承了?么?(2)该处子类SubClass的SubClass()方法是重写的还是继承的哈?这里应该是无常的构造器哈,怎么也有super(300)啊?跪求指教哈!!
问题解答
回答1:子类不能继承父类的构造器。子类在实例化之前会先实例化父类。
SubClass()就是默认构造器,不是重写也不是继承。super(300)是你自己写的,SubClass(int n)里就默认调用了super()。
相关文章:
1. 为什么我ping不通我的docker容器呢???2. java - 原生CGLib内部方法互相调用时可以代理,但基于CGLib的Spring AOP却代理失效,为什么?3. javascript - js中递归与for循环同时发生的时候,代码的执行顺序是怎样的?4. CSS3可否做出这个效果?5. docker - 如何修改运行中容器的配置6. python - django models 为生成的html元素添加样式。7. html5 - 怎么用npm下载react3版本的路由呢。8. python中怎么对列表以区间进行统计?9. javascript - iframe 为什么加载网页的时候滚动条这样显示?10. css - 移动端 line-height安卓错位,苹果机正常用,缩放解决了,可是又出来了占位的问题
