1.所有类如果没有构造函数,Java都会提供默认的无参构造函数,该函数什么都不做。
public class Test{
public static void main(String args[]){
Test t = new Test();//默认的无参构造函数
}
}
运行结果:
2.如果类提供了构造函数,无论是否有参,Java都不会提供默认的无参构造函数。
public class Test{
public Test(){System.out.println("无参构造函数");}//(1)无参构造函数
public Test(int x){System.out.println("有参构造函数");}//有参构造函数
public static void main(String args[]){
Test t = new Test();//(1)如果被注释,这行语句就会出错
Test t2 = new Test(2);
}
}
运行结果:
无参构造函数
有参构造函数
注意:如果类仅仅提供了有参的构造函数,那么调用无参构造函数就会出错,无法编译。
3.子类构造函数会默认调用父类的无参构造函数
class Base{
public Base(){System.out.println("父类无参构造函数");}
public Base(int x){System.out.println("父类有参构造函数");}
}
public class Test extends Base{
public Test(){System.out.println("子类无参构造函数");}
//public Test(){super();System.out.println("子类无参构造函数");}
public Test(int x){System.out.println("子类有参构造函数");}
public static void main(String args[]){
Test t = new Test();//(1)
Test t2 = new Test(2);//(2)
}
}
运行结果:
父类无参构造函数
子类无参构造函数
父类无参构造函数
子类有参构造函数
(1)和(2)都会调用Base();
注意:如果父类仅仅提供了有参的构造函数,那么子类的构造函数就会出错。
4.子类使用super()关键字可以指定调用父类哪个构造函数
class Base{
public Base(int x){System.out.println("父类有参构造函数");}
}
public class Test extends Base{
public Test(){super(2);System.out.println("子类无参构造函数");}
public Test(int x){super(x);System.out.println("子类有参构造函数");}
public static void main(String args[]){
Test t = new Test();//(1)
Test t2 = new Test(2);//(2)
}
}
运行结果:
父类有参构造函数
子类无参构造函数
父类有参构造函数
子类有参构造函数
(1)和(2)都会调用父类的有参构造函数。
注意:super()语句必须是构造函数的第一条语句。
分享到:
相关推荐
java中的继承(子类调用父类构造方法还不懂).doc
c#(f_0001)显示调用父类构造方法收集.pdf
Java的子类调用父类的构造方法.pdf
程序中描述了子类对象构建调用父类的构造方法,以及类变量和实例变量创建的不同过程
如果在子类中需要父类的构造方法就需要显式地调用父类的构造方法,或者不重写父类的构造方法。 子类不重写 __init__,实例化子类时,会自动调用父类定义的 __init__。 class Father(object): def __init__(self, ...
parent 调用父类的构造方法 要引用一个类而不是对象的方法,可以使用 ::(两个冒号),而不是 ->。 所以, parent::__construct() 以为着调用父类的 __construct() 方法。 修改上篇《使用类继承解决代码重复等问题》...
本文实例讲述了Python实现...子类不显式调用父类的构造方法,而父类构造函数初始化了一些属性,就会出现问题 如果子类和父类都有构造函数,子类其实是重写了父类的构造函数,如果不显式调用父类构造函数,父类的构造
2.使用未绑定方法调用父类构造方法 3.使用super()函数调用父类的构造方法 重点 ''' class FuleiFun: def __init__(self, num): self.num = num * 2 print('父类名称%s' % num) def toolsFun(self): print('父类
主要介绍了C++类继承之子类调用父类的构造函数的实例详解的相关资料,希望通过本文大家能够掌握C++类继承的相关知识,需要的朋友可以参考下
本篇文章介绍了,Java中子类调用父类构造方法的问题分析。需要的朋友参考下
因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。 如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下...
主要介绍了C#中子类调用父类的实现方法,通过实例逐步分析了类中初始化构造函数的执行顺序问题,有助于加深对C#面向对象程序设计的理解,需要的朋友可以参考下
父类构造方法只有无参构造,子类可以不显式调用super,也可以显式调用,没有写的话自动调用。父类构造方法只有有参构造,那么子类构造方法的第一句必须显式调用父类的
NDK开发之C语言调用Java构造方法、父类方法、返回中文字符串乱码问题案例详细解析。
调用子类的构造方法时,会先调用父类的构造方法。默认隐式调用父类无参数的构造方法 4.如果要在子类的构造方法中显式调用父类的构造方法。使用super(参数列表),但是这行代码必须是在 子类的构造方法的第一行。
需要完成的任务 ...(1)主题类继承帖子类,并增加属性:主题id、版块id ...(3)帖子类的getInfo ()方法实现多态 (4)使用super关键值调用父类构造方法 2.技能训练 ...(3)会使用super关键字调用父类构造方法
Java中的继承与静态static等的执行先后顺序的面试题 java面试题静态加载顺序构造方法 ...2、调用类的构造方法时先调用父类的构造方法,在调用子类的构造方法 3、类初始化时,先初始化类的属性成员,在执行构造方法。