| Java 构造方法 问题 |
|
jameszhang 原创 更新:2006-05-31 21:13:44 版本: 1.0
|
|
我自认为对java中的基础知识很熟,但最近被一个刚来的新手问了个问题,使我不得不拿起JDK的书重新阅读。
问题是这样的:
public class TestA { public TestA(int a) { } }
class TestB extends TestA { public TestB() {
} }
上面的代码 错误 在于 那里? 实际解决这个问题很简单,
在 TestB 构造中 加 上 super(1);
或者 在 TestA 中加上
public TestA() { } 也可以,但 为什么会这样?经过对 JDK的规范 查找 发现
编译器在编译子类的时候 会找 父类 构造 如果没有 会在子类构造的第一行 加上 super(); 这样就会出现错误了,看看我们的例子,因为 构造 不能继承下来,TestA的 构造必须有参数,所以当TestB 的构造中会被 编译器 默认 加上super() 所以 代码检查的时候出错了,这种问题以前不太注意,没有深入考虑过,直到被人问道, 看来JDK的基础还要好好看看,呵呵
[han][han][han][han]
|
|
|
评论人:fanjsp
|
发表时间: Mon May 29 19:34:44 CST 2006
|
|
[8I]
|
|
|
评论人:ifulm2
|
发表时间: Tue May 30 17:43:41 CST 2006
|
|
非常感谢啊!
|
|
|
评论人:ifulm2
|
发表时间: Tue May 30 17:44:43 CST 2006
|
|
非常感谢,Thanks!
|
|
|