关于类构造函数的继承关系疑惑? 学习中,遇到了个问题,为什么 子类对象不仅会实现子类的构造函数方法,还会向上实现父类的构造函数?JAVA API文档不是记载,类的构造函数没有任何返回类型,并不属于类的成员方法。因此当子类继承父类时,如何又将父类的构造函数复制到子类里面呢?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 “子类对象不仅会实现子类的构造函数方法,还会向上实现父类的构造函数”。这句话是胡说八道,写这句话的人是误人子弟。子类继承父类中可继承的属性和方法。构造函数是不能被继承的。这是肯定的。之所以出现上面的胡说八道的话,是因为对一个概念的混淆。当创建一个子类的实例的时候,父类的构造函数会被显式或隐式的调用。调用跟继承自然是不一样的。举个例子吧:class Animal { Animal() { System.out.println("Animal Constructor."); }}class Dog extends Animal { Dog() { System.out.println("Dog Constructor."); }}在程序中创建一个Dog实例的时候,也就是Dog d = new Dog();的时候,会有如下结果:Animal Constructor.Dog Constructor.为啥呢?因为上面的Dog Constructor会被改写成: Dog() { super(); System.out.println("Dog Constructor."); }super()就是调用了父类的构造函数,这句是编译器自动(隐式)的加入的。要想详细的了解构造函数,还是读书吧,这里就不想细说了。 子类继承了基类的的所有成员和方法(非private)在子类创建对象的时候并不仅仅是创建了一个对像,他还会涉及到基类,当你创建一个之类对象时这个对象里面还含有一个基类的子对象,就像包裹在子类里面一样。而这个时候为了让基类能正确地初始化只有一个方法就是调用基类的构造函数来进行初始化,因此java会在子类创建对象的时候自动地调用基类的构造函数进行初始化!你从上面这段去理解应该会比较容易明白~ StringBuilder为什么无法append进去指定的内容? 文件小问题,大虾们帮忙哈!~~ 刚遇到的面试题,谁可以给可答案参考下 一个关于applet的显示问题 关于JTable的问题 ResourceBundle.getBundle 从何处开始定位? 请问谁要ORACLE10G和9I的最新的在LINUX下WINDOWS下的全套补丁(尤其是最大的那4个几百兆的),请回贴 调用存储过程返回多结果集的问题 哪儿有《think in java》的下载!!!! 关于JDK下载安装问题 新手问题:关于java中的方法调用 急急,自己搞不定,请大家一起来帮忙解决:
Animal() {
System.out.println("Animal Constructor.");
}
}class Dog extends Animal {
Dog() {
System.out.println("Dog Constructor.");
}
}在程序中创建一个Dog实例的时候,也就是Dog d = new Dog();的时候,会有如下结果:
Animal Constructor.
Dog Constructor.为啥呢?因为上面的Dog Constructor会被改写成:
Dog() {
super();
System.out.println("Dog Constructor.");
}super()就是调用了父类的构造函数,这句是编译器自动(隐式)的加入的。要想详细的了解构造函数,还是读书吧,这里就不想细说了。
在子类创建对象的时候并不仅仅是创建了一个对像,他还会涉及到基类,当你创建一个之类对象时这个对象里面还含有一个基类的子对象,就像包裹在子类里面一样。而这个时候为了让基类能正确地初始化只有一个方法就是调用基类的构造函数来进行初始化,因此java会在子类创建对象的时候自动地调用基类的构造函数进行初始化!你从上面这段去理解应该会比较容易明白~