| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 833 人关注过本帖
标题:继承中的构造方法问题
取消只看楼主 加入收藏
黄昏の腕轮
Rank: 2
等 级:论坛游民
帖 子:64
专家分:12
注 册:2009-6-13
结帖率:100%
收藏
 问题点数:0 回复次数:2 
继承中的构造方法问题
class SuperClass {
    private int n;
      
  /*   
    SuperClass() {
        System.out.println("SuperClass()");
    }
   */
   
 
    SuperClass(int n) {
        System.out.println("SuperClass(" + n + ")");
        this.n = n;
    }
}

class SubClass extends SuperClass {
    private int n;
   
    SubClass(int n) {
            //super();
        System.out.println("SubClass(" + n + ")");
        this.n = n;
    }
   
    SubClass() {
        super(300);
        System.out.println("SubClass()");
    }
}

public class TestSuperSub {
    public static void main(String arg[]) {
        SubClass sc1 = new SubClass();
        //SubClass sc2 = new SubClass(400);
    }
}

这个程序这么写为什么报错?super(300);不算调用吗?
搜索更多相关主题的帖子: 继承 构造 
2010-03-21 18:44
黄昏の腕轮
Rank: 2
等 级:论坛游民
帖 子:64
专家分:12
注 册:2009-6-13
收藏
得分:0 
以下是引用dadongzicool在2010-3-21 22:10:38的发言:

所以在子类中如果显式声明构造函数,就要用super(n)来调用父类的构造函数;如果不写此语句或者用super()就会调用父类不带参数的构造函数
class SubClass extends SuperClass {
    private int n;
   
    SubClass(int n) {
            //super();
        System.out.println("SubClass(" + n + ")");
        this.n = n;
    }
   
    SubClass() {
        super(300);
        System.out.println("SubClass()");
    }
}
,事实上当你显式声明了父类的构造函数时,系统就不会产生默认的不带参数的构造函数,所以当调用父类不带参数的构造函数时就会报错。
我调用的是带参数的呀..super(300)
大大能不能再说的清楚一点。。
2010-03-21 22:32
黄昏の腕轮
Rank: 2
等 级:论坛游民
帖 子:64
专家分:12
注 册:2009-6-13
收藏
得分:0 
我main函数里面没有用SubClass(int n),也必须要声明父类不带参数的构造函数吗?
2010-03-22 01:10
快速回复:继承中的构造方法问题
数据加载中...
 
   



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

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