构造方法 -- super()方法
2015-05-12 10:00
127 查看
class Father{ public Father(int i){ System.out.println("父类构造方法 -- Father(int i)"); } } public class Child_Constrctor extends Father{ public Child_Constrctor(int i ,String s) { //super(i); System.out.println("子类构造方法 -- Child_Constrctor(String s ,int i) -- )"); // TODO Auto-generated constructor stub } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub } }
在这段代码中,public Child_Constrctor(int i ,String s)这行编译器会报错:
Implicit super constructor Father() is undefined. Must explicitly invoke another constructor
因为在父类中已经自定义了一个带参数的构造方法,那么编译器将不会给父类添加默认的无参构造方法Father(),所以此时系统无法找到父类默认无参构造方法Father()
俩种修改方法:
1.在子类构造方法中添加super(i);显示的调用父类构造方法。
2.在父类中显示的声明无参构造方法:
public Father(){ System.out.println("父类构造方法 -- Father()"); }
方法一修改后的代码:
class Father{ public Father(int i){ System.out.println("父类构造方法 -- Father(int i)"); } } public class Child_Constrctor extends Father{ public Child_Constrctor(int i ,String s) { super(i);//调用父类不同的构造方法 System.out.println("子类构造方法 -- Child_Constrctor(String s ,int i) -- )"); // TODO Auto-generated constructor stub } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Child_Constrctor C = new Child_Constrctor(1,"99"); } }
打出来的log:
父类构造方法 -- Father(int i)
子类构造方法 -- Child_Constrctor(String s ,int i) -- )
方法二修改后的代码:
class Father{ public Father(int i){ System.out.println("父类构造方法 -- Father(int i)"); } public Father(){ System.out.println("父类构造方法 -- Father()"); } } public class Child_Constrctor extends Father{ public Child_Constrctor(int i ,String s) { super(); //调用父类不同的构造方法 System.out.println("子类构造方法 -- Child_Constrctor(String s ,int i) -- )"); // TODO Auto-generated constructor stub } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Child_Constrctor C = new Child_Constrctor(1,"99"); } }
打印出来的log为:
父类构造方法 -- Father()
子类构造方法 -- Child_Constrctor(String s ,int i) -- )
相关文章推荐
- Super 关键字在子类构造方法和普通方法中的应用
- Java基础系列(十)构造方法、super
- java构造方法与super
- [Java] super,this 的区别及构造方法的使用
- 如果构造方法中包含super(…)或this(…)调用,那么它们只能作为该构造方法的第一条语句,也就是说连try…catch都不可以有
- 30.子类如何使用super启动父类的构造方法
- 详解Java使用super和this来重载构造方法
- 类在构造时,构造方法内,类属性,父类属性,super的执行顺序
- Lesson_for_java_day09--继承、实例化、构造方法、覆盖、重载、this关键字、super关键字、全局变量和局部变量
- JAVA super关键字以及 构造方法
- Java构造方法之super用法
- 继承 子类对父类方法的覆盖 构造方法的继承 super
- Android自定义View(一)关于super、this和构造方法
- 构造方法中super()的作用
- Android自定义View(一)关于super、this和构造方法
- 关于子类构造方法调用super();
- JAVA中super()作用:调用父类构造方法和构造方法链
- java继承特点、好处、继承中构造方法间的关系、super、
- this、super、构造方法
- 构造方法有没有必要写super()