Java构造函数
来源:互联网 发布:灵界基友网络剧下载 编辑:程序博客网 时间:2024/05/04 17:58
Java构造函数
本文地址:http://www.examw.com/java/jichu/149581/
Java在创建对象的时候会要执行它的构造函数。不仅如此,Java还要执行父类的构造函数,往上一级一级直到没有父类为止。对于初学者来说,有三个问题不容易搞懂:
1、父类的构造函数是否一定会执行?
2、是先执行子类的构造函数还是先执行父类的构造函数?
3、如果父类有多个构造函数,那么 Java 会选择哪一个?
- 父类的构造函数是否一定会执行?
是的,父类的构造函数一定会执行。所以如果某个类的层次很深,那么它创建对象时就会要执行一大堆的构造函数。
- 是先执行子类的构造函数还是先执行父类的构造函数?
Java 会顺着继承结构往上一直找到 Object,然后从 Object 开始往下依次执行构造函数。先执行父类的构造函数,那么子类的构造函数执行的时候就不需要担心父类的成员是否初始化好了。
- 如果父类有多个构造函数,那么 Java 会选择哪一个?
父类:
public class SuperClass {
public SuperClass() {
System.out.println("super class constructed.");
}
public SuperClass(String name) {
System.out.println("super class constructed with name: " + name);
}
}
子类:
public class SubClass extends SuperClass {
public SubClass() {
System.out.println("sub class constructed.");
}
public SubClass(String name) {
super(name); //这一句在语法上不是必须的。但有没有这一句,执行起来不一样。有了这一句,就表示子类的构造过程中调用 的是父类的带字符串参数的构造函数,也就是 public SuperClass(String name) 这个方法。如果没有这一 句,就表示子类的构造过程中调用的是父类的缺省构造函数。
System.out.println("sub class constructed with name: " + name);
}
public static void main(String[] args) {
new SubClass();
new SubClass("world");
}
本文地址:http://www.examw.com/java/jichu/149581/
Java在创建对象的时候会要执行它的构造函数。不仅如此,Java还要执行父类的构造函数,往上一级一级直到没有父类为止。对于初学者来说,有三个问题不容易搞懂:
1、父类的构造函数是否一定会执行?
2、是先执行子类的构造函数还是先执行父类的构造函数?
3、如果父类有多个构造函数,那么 Java 会选择哪一个?
- 父类的构造函数是否一定会执行?
是的,父类的构造函数一定会执行。所以如果某个类的层次很深,那么它创建对象时就会要执行一大堆的构造函数。
- 是先执行子类的构造函数还是先执行父类的构造函数?
Java 会顺着继承结构往上一直找到 Object,然后从 Object 开始往下依次执行构造函数。先执行父类的构造函数,那么子类的构造函数执行的时候就不需要担心父类的成员是否初始化好了。
- 如果父类有多个构造函数,那么 Java 会选择哪一个?
如果父类有多个构造函数,那么子类可以在构造函数中选择其中一个(且最多只能选择一个)来执行。如果子类没有选择,那么 Java 将会执行父类的缺省构造函数。
下面是一个例子:
父类:
public class SuperClass {
public SuperClass() {
System.out.println("super class constructed.");
}
public SuperClass(String name) {
System.out.println("super class constructed with name: " + name);
}
}
子类:
public class SubClass extends SuperClass {
public SubClass() {
System.out.println("sub class constructed.");
}
public SubClass(String name) {
super(name); //这一句在语法上不是必须的。但有没有这一句,执行起来不一样。有了这一句,就表示子类的构造过程中调用 的是父类的带字符串参数的构造函数,也就是 public SuperClass(String name) 这个方法。如果没有这一 句,就表示子类的构造过程中调用的是父类的缺省构造函数。
System.out.println("sub class constructed with name: " + name);
}
public static void main(String[] args) {
new SubClass();
new SubClass("world");
}
}
输出为:
super class constructed.
sub class constructed.
super class constructed with name: world
sub class constructed with name: world
否则:
super class constructed.
sub class constructed.
super class constructed.
sub class constructed with name: world
- js构造函数与JAVA构造函数
- java构造函数调用构造函数
- Java构造函数中调用构造函数
- Java 构造函数
- JAVA 基础 - 构造函数
- JAVA构造函数
- java构造函数
- java构造函数
- java构造函数
- java构造函数
- Java构造函数
- java的构造函数
- java基础知识-构造函数
- java---函数-构造--拷贝
- java 继承 构造函数
- java 构造函数
- java-构造函数
- JAVA 构造函数
- mr.l 爱睡觉~
- 背下这148句话,你可以提高一个档次了,不止在文学方面
- C# 密封类和密封方法
- STL系列之二 stack栈
- asp.net 下 ext填充grid代码
- Java构造函数
- 上传资源"24点游戏"修正
- Android之Http请求实例(文件上传+servlet接收)
- asp.net中split的用法
- linux 链接的使用 创建和删除符号连接(软、硬链接)
- 压缩算法概述
- 学生感受_齐禄禄
- System.Web.HttpException: 验证视图状态MAC失败。如果此应用程序由网络场或群集承载,请确保配置指定了相同的validationKey和验证算法……解决方案
- timestamp To Date