| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 480 人关注过本帖
标题:继承的问题
只看楼主 加入收藏
chengsencs
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2006-7-24
收藏
 问题点数:0 回复次数:4 
继承的问题

这个程序:
public class ConstructorTest
{
public static void main(String[] args)
{
C c= new C("hello");
}
}

class A
{
public A()
{
System.out.println("this is A");
}
}

class B extends A
{
public B(String str)
{
System.out.println("this is B");
}
}

class C extends B
{
public C(String str)
{
super(str);
System.out.println("this is C");
}
}
书上说C进行实例化的时候,先对A、B进行实例化。又说因为B中没有默认构造函数,所以要加 super(str);
说是这表示调用B的有参构造函数。
我不明白的是“A中是无参构造函数,由于C中多了 super(str);
,所以无法调用A中的无参构造函数,所以无法对A进行实例化。”
为什么是错误的说法。

搜索更多相关主题的帖子: 继承 
2006-12-09 22:53
yqfang310
Rank: 2
等 级:新手上路
威 望:4
帖 子:458
专家分:0
注 册:2006-10-10
收藏
得分:0 
super(str)其实就等同于调用了public B(String str)嘛,这个是带参构造函数啊,因为B中的重构了一个有参构造函数,所以原来那个无参的就被覆盖了,不会执行了

JAVA是什么?我也不清楚......
2006-12-09 23:35
chengsencs
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2006-7-24
收藏
得分:0 
不好意思各位,这个问题我明白了。还有一个新问题:

B b= new C();
是什么意思?
生成的是谁的对象?
为什么不是
C c= new C();或
B b= new B();呢?

谢谢。
2006-12-09 23:36
yqfang310
Rank: 2
等 级:新手上路
威 望:4
帖 子:458
专家分:0
注 册:2006-10-10
收藏
得分:0 
生成的对象是C的,便由于它继承了B嘛,所以可以那样写,

JAVA是什么?我也不清楚......
2006-12-09 23:39
しΟν∈→鱈
Rank: 1
等 级:新手上路
威 望:2
帖 子:369
专家分:0
注 册:2006-10-25
收藏
得分:0 
B b= new C();
生成的是C的对像,赋给了B的引用

开开心心的过&玩每一天!!!!
2006-12-10 12:26
快速回复:继承的问题
数据加载中...
 
   



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

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