我自认为对java中的基础知识很熟,但有时候碰到一个很简单的问题却总是答不上来,使我不得不拿起JAVA基础的书重新阅读。所以我认为要想日后工作中熟练的运用这些知识,必须从学的时候就应该打下扎实的基础,这就是我要发这一系列的帖子的目的,希望能对霏凡初学JAVA的会员们有一些帮助。
今天要讲的就是在学JAVA基础类的时候子类继承父类的时候,构造方法的问题。
大家先看下面这个例子错在哪里?
问题是这样的:
Quote:
public class TestA
{
public TestA(int a)
{
}
}
class TestB extends TestA
{
public TestB()
{
}
}
我相信大家看过后的第一感觉就是没有错啊,其实它确实存在错误,解决这个问题很简单,
在TestB 构造中加上super(1);
或者是在TestA 中加上
public TestA()
{
}
用到的JAVA知识点:
Quote:
编译器在编译子类的时候 会找 父类 构造 如果没有 会在子类构造的第一行
加上 super();
这样就会出现错误了,看看我们的例子,因为 构造 不能继承下来,TestA的
构造必须有参数,所以当TestB 的构造中会被 编译器 默认 加上super() 所以
代码检查的时候出错了