六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 82|回复: 0

继承关系中子类的构造函数

[复制链接]

升级  60.33%

117

主题

117

主题

117

主题

举人

Rank: 3Rank: 3

积分
381
 楼主| 发表于 2013-1-27 04:47:37 | 显示全部楼层 |阅读模式
package scjp;public class Demo78 {protected int i;  Demo78(int i){  this.i=i;  }}class B{}class C extends Demo78{}class D extends Demo78{D(){System.out.println(i);}}class E{class Demo78{}}class Demo78{}

C,D会报错,请问为什么?

因为:C,D没有与超类相同的构造函数.C中没有定义构造函数所以JVM会自动添加一个空的构造函数,但是Demo78这个父类没有空的构造函数,这里又是另外一个问题:

    如果一个类没有写构造函数的话JVM会给它添加一个空的构造函数,如果它写了构造函 数还会不会添加这个空的构造函数呢?不会的。

  所以也就是Demo78中没有这个空的构造函数,所以C是错的。
  
  关于D答案是一样的,虽然它的这个构造函数不是JVM添加的。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表