标题:这个程序为什么编译通不过?(关于构造函数调用的问题)
只看楼主
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
那当然,一般你不显示的调用超类的构造函数的话,都是由编译器调用超类的无参构造函数,如果超类没有无参构造函数,那程序将报错,



可惜不是你,陪我到最后
2006-04-16 14:14
Goldgulf
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-6
得分:0 

子类如果没有定义构造函数,那么它会默认的继承父类的一个无参的构造函数,
这么说对不对啊?

2006-04-16 18:49
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
这是对的,但是前提是父类得定义一个无参构造函数

可惜不是你,陪我到最后
2006-04-16 18:52
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
得分:0 
子类不是不能继承父类的构造函数吗?
2006-04-16 18:55
Goldgulf
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-6
得分:0 

class Test
{
class Example
{
String str;
public Example()
{

System.out.println("first constructor ");
}
public Example(String s)
{

System.out.println("second constructor ");
}
}
class Demo extends Example
{
public Demo(String s)
{
System.out.println("Demo");
}
}

public void f ()
{
//Example ex = new Example("Good");
Demo d = new Demo("nihao");//就是这里说找不到符号。
}
public static void main(String args[])
{
new Test().f();
}
}


为什么是:
first constructor
Demo

2006-04-16 18:55
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
子类是不能继承,但是子类一定会调用父类的构造函数,一般如果你程序里面没有显式的调用的话,编译器会帮你自动调用父类的无参构造函数。
你上面的程序不会找不到符号的,因为你已经定义了有参数的子类构造函数,如果你调用的是子类的无参构造函数才会说找不到符号

可惜不是你,陪我到最后
2006-04-16 19:09
qlyiua
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-1-14
得分:0 

当用子类去创建一个实力时,默认会调用父类的空构造函数,还有,继承是无论如何不会继承父类的构造函数的

2006-04-16 19:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-57789-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015734 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved