// 注意,这里不能是 public class OOO,否则编译无法通过,需把文件命名成 OOO.java
class OOO {
// 注意:如果不定义OOO(),那么Shapes(int i)编译出错 OOO() {
System.out.println(" Construtor() in OOO");
}
OOO(int i) {
// this(); // 可以这样调用!
System.out.println(" Construtor(i) in OOO");
}
} public class Shapes extends OOO{ Shapes() {
super(200); // 必须放在第一行,否则出错。
// 调用super(200)以后,不再默认调用super()了,否则会自动调用super()
// 原因:构造函数通常用于完成一些初始化的工作,比方说类B继承了类A,类A中有一个name属性,在类A的构造函数中name 被初始化,如果在类B构造函数中我们没有先调用父类A的构造函数而先使用了未初始化的资源name,将不能得到我们期望的结果,所以人们就会有了这种约定。
System.out.println(" Construtor() in Shapes");
} Shapes(int i) {
// 还是会默认调用super()
System.out.println(" Construtor(int) in Shapes");
} public static void main(String[] args) {
// 例子1:
System.out.println("==================ex1==================");
Shapes s1 = new Shapes(); // 例子2:
System.out.println("==================ex2==================");
Shapes s2 = new Shapes(100);
}
}

另外有一篇:java构造函数的执行顺序

http://www.blogjava.net/rocket/archive/2008/05/27/203165.html

若创建一个没有构造函数的类,则编译程序会帮我们自动创建一个默认构造函数。
如果已经定义了一个构造函数(无论是否有自变量),编译程序都不会帮我们自动合成一个:
class Bush {
Bush(int i) {}
Bush(double d) {}
}

现在,假若使用下述代码:
new Bush();
编译程序就会报告自己找不到一个相符的构造函数。

Java的默认构造函数调用的更多相关文章

  1. JAVA & .NET创建对象构造函数调用顺序

    JAVA 定义Person类 package models; ​ public class Person { public Person() { System.out.println("pe ...

  2. C++ //构造函数调用规则 //1.创建一个类,C++编译器会给每个类添加至少3个函数 //默认构造(空实现) //析构函数(空实现) //拷贝函数(值拷贝) //2.如果我们写了有参构造函数 编译器就不会提供默认构造函数 但是会提供拷贝构造函数 //3.如果我们写了拷贝函数 编译器就不再提供 默认 有参 构造函数

    //构造函数调用规则 #include <iostream> using namespace std; //1.创建一个类,C++编译器会给每个类添加至少3个函数 //默认构造(空实现) ...

  3. C++ //拷贝构造函数调用时机//1.使用一个已经创建完毕的对象来初始化一个新对象 //2.值传递的方式给函数参数传值 //3.值方式返回局部对象

    1 //拷贝构造函数调用时机 2 3 4 #include <iostream> 5 using namespace std; 6 7 //1.使用一个已经创建完毕的对象来初始化一个新对象 ...

  4. C++ //构造函数的分类及调用 //分类 // 按照参数分类 无参构造函数(默认构造) 有参构造函数 //按照类型分类 普通构造 拷贝构造

    1 //构造函数的分类及调用 2 //分类 3 // 按照参数分类 无参构造函数(默认构造) 有参构造函数 4 //按照类型分类 普通构造 拷贝构造 5 6 #include <iostream ...

  5. java初始化构造函数调用顺序

    类初始化时构造函数调用顺序: (1)初始化对象的存储空间为零或null值:  (2)调用父类构造函数:  (3)按顺序分别调用类成员变量和实例成员变量的初始化表达式:  (4)调用本身构造函数. 例子 ...

  6. java abstract构造函数调用

    构造函数是对象的基本,没有构造函数就没有对象.如果在父类中(这里就是你的抽象类)中显示的写了有参数的构造函数,在子类继承是就必须写一个构造函数来调用父类的构造函数 public abstract cl ...

  7. Java多线程之构造与发布

    资料来源 http://www.ibm.com/developerworks/library/j-jtp0618/ http://www.javaspecialists.eu/archive/Issu ...

  8. [Effective JavaScript 笔记]第18条:理解函数调用、方法调用及构造函数调用之间的不同

    面向对象编程中,函数.方法.类的构造函数是三种不同的概念. JS中,它们只是单个构造对象的三种不同的使用模式. 三种不同的使用模式 函数调用 function hello(username){ ret ...

  9. Java之对象构造过程

    先来运行一段代码 class A { public A() { init(); } public void init() { } public static void main(String[] ar ...

随机推荐

  1. iOS开发-为我们的项目添加头文件prefix header

    在XCode6新建项目时,不再自动创建头文件,因此我们需要手动添加. 点击我们的项目->Build Settings -> all -> 搜索“prefix” -> 修改pre ...

  2. C语言-十进制转换为二进制函数

    char * itobs(int num, char * str) { int i; * sizeof(int); ; i >= ; i--, num >>= ) { str[i] ...

  3. Silverlight实例教程 - Validation服务器端异步数据验证(转载)

    摘要:本 篇实例,我们仍旧使用SilverlightValidationDemo项目,为了不和过去的验证方法冲突,这里我们创建一个新的数据成员类 Staff,该类实现INotifyDataErrorI ...

  4. Atitit.自定义存储引擎的接口设计 api 标准化 attilax 总结  mysql

    Atitit.自定义存储引擎的接口设计 api 标准化 attilax 总结  mysql 1. 图16.1:MySQL体系结构1 2. 16.7. 创建表create()虚拟函数:2 3. 16.8 ...

  5. C++程序设计(第4版)读书笔记_C++概览:基础知识

    变量赋值 常用的变量赋值都是用“=”去赋值的 ; 但是如果把一个浮点数赋值给i的话,就会造成精度损失,在C++中最好使用初始化列表的方式“{}”给变量赋值,这样可以保证不会发生某些可能导致信息丢失的类 ...

  6. unity free asset

    Unity Test Tools https://www.assetstore.unity3d.com/#/content/13802 Sample Assets (beta) https://www ...

  7. eclipse 设置智能感知功能

    今天有点时间,研究了一下MyEclispse的智能感知的功能.刚开始使用它时总是感觉如此不爽→智能感知功能太弱!与Visual Studio2008简直不是一个档次的!不过后来经过查看网上的资料发现它 ...

  8. STL next_permutation(a,a+n) 生成一个序列的全排列。满足可重集。

    /** 题目: 链接: 题意: 思路: */ #include <iostream> #include <cstdio> #include <vector> #in ...

  9. Linux 比较重要且难掌握命令 集合

    1. find find path –option [-print] [-exec command] {} \; find . -maxdepth 1 -name aa find . -maxdept ...

  10. php 字符串截取

    $str="3,22,11,444,33,1,3455,33,22,444,55,66,77,88,99,554336,"; echo substr($str,0,strlen($ ...