码迷,mamicode.com
首页 > 其他好文 > 详细

Implicit super constructor xx() is undefined for default constructor

时间:2015-04-24 01:00:24      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

因为父类定义了一个有参的构造函数,此时编译器就不会调用默认的无参构造函数。
 
当子类继承时,必须在自己的构造函数显式调用父类的构造函数,才能确保子类在初始化前父类会被实例化。
 
如果你父类中有无参的构造函数,子类就不会强制要求调用,编译器会默认帮你调用父类的构造函数。
 
父类
class Person {
    protected String name;
    protected int age;
    //你已经定义了自己的构造函数,此时编译器不会为你创建默认的构造函数
    public Person(String name,int age) {
        this.name=name;
        this.age=age;
    }
    public void print() {
        System.out.println("Name:"+name+"/nAge:"+age);
    }
}
 
子类
class Student extends Person {
    public Student(){      //子类构造函数
    //super();   不行,因为你的父类没有无参的构造函数
 
    super("a",1);
      //显示调用父类的构造函数,而且必须是第一行调用
    }
}
    class Test {
        public static void main(String args[]){
        }
}
 
 

Implicit super constructor xx() is undefined for default constructor

标签:

原文地址:http://www.cnblogs.com/dolphin007/p/4452248.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!