关于java中构造函数的一些知识详解
java的构造函数是一个非常重要的作用,首先java里的构造函数是可以重载的,而且因为也是可以继承在父类的构造函数,所以在子类里,首先必然是调用父类的构造函数。可以看下面的两个例子来对比: public class Test { public static void main(String args[]) { B b = new B(100); } } class A { public A() { System.out.println("A without any parameter"); } public A(int i) { System.out.println("A with a parameter"); } } class B extends A { public B() { System.out.println("B without any parameter"); } public B(int i) { System.out.println("B with a parameter"); } } 这个例子最后输出的是 A without any parameter B with a parameter 可以看到首先调用的是父类的构造函数,然后再是调用自己的构造函数。但是因为这里的B类中的有参数的构造函数是没有super父类,所以导致它只会执行父类的没有参数的构造函数。如果要让它执行有参数的父类的构造函数,那么就要这样写代码: public class Test { public static void main(String args[]) { B b = new B(100); } } class A { public A() { System.out.println("A without any parameter"); } public A(int i) { System.out.println("A with a parameter"); } } class B extends A { public B() { System.out.println("B without any parameter"); } public B(int i) { super(i); //这里就是继承自父类的有参数的构造函数 System.out.println("B with a parameter"); } } 所以最后输出的是: A with a parameter B with a parameter 因此,派生类必须通过super来调用父类的含有参数的构造函数。以下再附一道题: public class Test extends X { Y y = new Y(); Test() { System.out.print("Z"); } public static void main(String args[]) { new Test(); } } class X { Y b = new Y(); X() { System.out.print("X"); } } class Y { Y() { System.out.print("Y"); } } 输出的结果是什么? 首先我们来分析这道题: 因为首先看这个main函数,这个main函数只有一句代码: new Test();因为发现这个Test类是继承自X,所以首先要构造X,那么就进行X类的运行 Y b = new Y(),然后我们可以看到输出的Y,然后就是执行X类的构造函数,输出X;接着就是构造Y,然后执行Test自己的构造函数,输出Z,所以输出结果是YXYZ。 以上这篇关于java中构造函数的一些知识详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。 (编辑:4S站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Java Web 实现QQ登录功能一个帐号同一时间只能一个人登录
- java.lang.UnsupportedOperationException:应用程序必须提
- JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据
- java 中HashMap、HashSet、TreeMap、TreeSet判断元素相同的
- JDK类中java.lang.ref.WeakReference对象的内存泄漏
- 使用java生成字母验证码
- Java生产1-100的随机数简单实例(分享)
- Java中==运算符与equals方法的区别及intern方法详解
- 为什么Java对象必须是8的倍数?
- java – DBCP和Hibernate在Spring上,不会重新打开死连接,为