Java继承时构造函数的调用

原创 2007年10月08日 22:26:00
/**
 *  父类Parent 
 *
 */
public class Parent {

        public String strName;
public int intAge;

/**
 * 无参构造函数
 *  
 */
public Parent() {

System.err.println("Parent无参构造函数");
}


/**
 * 有参构造函数
 * @param strName
 * @param intAge
 */
public Parent(String strName , int intAge) {

strName = this.strName;
intAge = this.intAge;
System.err.println("Paren有参构造函数");
}
}

/**
 *  子类Parent 
 *
 */
public class Child extends Parent {

public String strName;
public int intAge;

/**
 * 无参构造函数 
 */
public Child(){

System.err.println("Child无参构造函数");
};

public Child(String strName , int intAge) {

strName = this.strName;
intAge = this.intAge;

System.err.println("Child有参构造函数");
}
}

/**
 * 
 *  测试类别
 */
public class ExtendTest {

/**
 * @param args
 */
public static void main(String[] args) {

Parent parent = new Parent();       (1)
Child child = new Child();          (2)
Parent parentTest = new Child();    (3)
}

}

(1)结果
============
Parent无参构造函数
============

(2)结果
============
PaParent无参构造函数
Child无参构造函数
============

(3)结果
============
PaParent无参构造函数
Child无参构造函数
============

总结
1).调用子类别的构造方法,会先行调用父类别的构造方法.
2).如果有自定义的构造方法,编译器就不会提供无参构造方法.否则,编译器会提供无参构造方法.
3).如果Parent中没有重写无参构造方法,编译会通过.因为子类在寻找父类的构造方法的时候,发现只有带参数的构造方法.而没有无参构造方法.
4).同样如果想将Parent中无参构造方法的访问级别设为private,同样会有3)中的问题.
5).子类想调用父类的构造方法,用super(); 

java的继承关系中,构造方法调用问题

考虑下下面代码输出结果 public class test3 {     public static void main(String[] args) {         new Child("mik...
  • u013427324
  • u013427324
  • 2016年06月01日 14:33
  • 629

Java在继承中构造器的调用顺序

Java中子类继承父类时代码结构初始化以及调用的顺序:    子类声明一个对象时,     步骤1: 这时先调用的是基类的静态初始化块,然后是下一层的子类,一直到声明对象的类的静态初始化块。从这里...
  • wangjinyang_123
  • wangjinyang_123
  • 2015年06月08日 20:16
  • 1070

java中继承父类后构造函数的调用

java继承中对构造函数是不继承的,只是调用(隐式或显式)。 以下是例子:  public class FatherClass {  public FatherClass() {     ...
  • lixin88
  • lixin88
  • 2013年03月22日 14:26
  • 1394

java继承后构造函数的继承机制

最近在了解一些java基础的东西。发现继承后构造函数的继承很有意思,怕忘了所以记录一下: 测试1-如果父类不主动创建构造函数则子类创建构造函数没有限制 测试2-如果父类创建不含参构造函数则子类创建构造...
  • abcdefgzmy
  • abcdefgzmy
  • 2016年02月19日 11:48
  • 1938

Java继承关系下的构造方法调用

在Java中创建一个类的对象时,如果该类存在父类,则先调用父类的构造方法,然后再调用子类的构造方法。本文描述子类中如何调用父类的构造方法。...
  • ccpat
  • ccpat
  • 2015年03月19日 16:24
  • 1798

Java继承,子类默认在构造函数中用super()调用父类构造函数

1.子类继承父类的方法属性,并重写父类的方法,子类修饰符不能比父类方法的修饰符的范围狭窄。 Protect 与 默认 区别: protected :成员 本类和子类可以访问。【其他类不可以使用(即使...
  • yingtian648
  • yingtian648
  • 2016年06月02日 08:54
  • 3651

继承与派生,多继承,函数重载,构造函数调用顺序

继承与派生,多继承,函数重载,构造函数调用顺序
  • LingXi__Y
  • LingXi__Y
  • 2016年08月18日 19:11
  • 1250

理解C++存在继承和组合的对象构造函数调用顺序

前言: Hello,全世界早上好啊,哈哈,9月你好,2015年9月的第一天,也是自己本科生涯的最后一年了,接下来就是校招走上自己的职场,昨天是大四的第一节课,上的是软件工程,挺喜欢的一门课,...
  • u013777351
  • u013777351
  • 2015年09月01日 08:52
  • 2348

多继承时的构造函数调用的顺序

调用顺序是:虚基类——直接基类——子对象——派生类 我们假设一个非常复杂的情况: class A; class B: virtual public A; class C: virtual public...
  • QianShouYuZhiBo
  • QianShouYuZhiBo
  • 2014年01月17日 00:03
  • 1838

C++继承中构造函数、析构函数调用顺序及虚析构函数

C++继承中构造函数、析构函数调用顺序及虚析构函数 首先说说构造函数,大家都知道构造函数里就可以调用成员变量,而继承中子类是把基类的成员变成自己的成员,那么也就是说子类在构造函数...
  • u012861978
  • u012861978
  • 2016年02月16日 11:29
  • 1034
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java继承时构造函数的调用
举报原因:
原因补充:

(最多只允许输入30个字)